Событие загрузки окна не запускается в ipad ios 8.4
Я сталкиваюсь со следующей странной проблемой:
Функциональные возможности:
Когда я открываю страницу моего веб-сайта, на которой много изображений и javascript / jquery используется для функциональности на стороне клиента. При нажатии на каждое изображение все остальные изображения изменяют свою непрозрачность, а выбранное изображение показывает<div>
содержащий некоторую информацию и видео для изображения.
window.onload
событие для изменения размера<div>
элемент, когда изображение нажата. И некоторый JavaScript, который идентифицирует браузер и соответственно устанавливает источник видео тега.Все изображения отображаются внутри списка данных и связаны с базой данных.Поскольку unveil загружает изображение только после события прокрутки, я добавил код при загрузке страницы, чтобы искусственно прокрутить страницу на пиксель.Проблема:
Я открываю ту же страницу в iPad (iOS 8.4) на Chrome или Safari. Весь мой JavaScript подwindow.onload
не стреляет
Страница ASPX:
<script type="text/javascript" src="/js/jquery.unveil.js"></script>
<asp:DataList ID="dlPersonList" runat="server" OnItemDataBound="dlPersonList_OnItemDataBound"
RepeatDirection="Horizontal" RepeatLayout="Flow">
<ItemTemplate>
<div class="itemImage">
<asp:HyperLink ID="hypPersonPicture" runat="server">
<asp:Image ID="imgPersonPicture" runat="server" CssClass="lazy" />
</asp:HyperLink>
</div>
<asp:Panel class="person-detail" ID="pnlpersonDetail" runat="server">
<div class="person-content detailView">
<%--Some text and other controls--%>
<asp:Panel ID="pnlVideo" runat="server">
<div class="video-content">
<video id="personVideo" controls="controls" preload="none">
<%--Video source elements--%>
</video>
</div>
</asp:Panel>
</div>
</asp:Panel>
</ItemTemplate>
</asp:DataList>
Код CS:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Bind data list
dlPersonList.DataSource = SelectPersons();
dlPersonList.DataBind();
// Register the script for slide up effect
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "scriptPerson", @"$(document).ready(function () {
jWDScrollWindow();});",
true);
}
}
protected void dlPersonList_OnItemDataBound(Object sender, DataListItemEventArgs e)
{
/*Lazy loading functionality*/
//Set the image source as loader image
imgPersonPicture.Attributes.Add("src", "/img/loading.gif");
//set image resource as actual image
imgPersonPicture.Attributes.Add("data-src", imageObject.ImagePath.TrimStart('~'));
}
Код JS:
window.onload = function () {
//Apply lazy loading functionality to images
$(".lazy").unveil();
//Javascript to set the width and height of the details div
.
.
//Javascript to blur all the other images when one image is clicked
}
function jWDScrollWindow() {
//scroll by 1px to load the images
$(window).scrollTop($(window).scrollTop() + 1);
}
Вещи, которые я пробовал еще:
Я подумал, что jquery unveil может сделать страницу медленной или что-то в этом роде. Итак, я удалил вызов, но проблема заключается вunveil();
называется внутриwindow.onload
, Таким образом, если window.onload не запускается, он не имеет смысла удалять его.Я добавил предупреждение () наwindow.onload()
, но в этом случае все работает отлично.Вся функциональность прекрасно работает на всех устройствах, кроме ipad с ios 8.4 (прекрасно работает даже в ранних версиях os)
Помощь / Предложения очень ценятся.
РЕДАКТИРОВАТЬ:
Я нашел одинjsconsole через который мы можем видеть консольные логи в iPad на рабочем столе.Вот как мы можем это использовать.
Я проверил журналы и обнаружил, что когда я получаю ошибкуJQMIGRATE: jQuery.browser is deprecated
Мойwindow.onload
событие не срабатывает. Тогда как, если я получу журналJQMIGRATE: Logging is active
все работает нормально. мойjqmigrate
ссылка на главной странице как,
<script type="text/javascript" async src='/js/jquery-migrate-1.1.1.js'></script>