я обращенную следующий странный вопрос:Окно OnLoad событие не срабатывает в Ipad ИОС 8.4
Функциональность:
Когда я открываю страницу сайта, которая имеет много изображений и иметь JavaScript/JQuery используется для функциональных возможностей на стороне клиента , При нажатии каждого изображения все остальные изображения меняют свою непрозрачность, а на выбранном изображении отображается <div>
, содержащая некоторую информацию и видео для изображения.
- Я использовал jquery unveil, который загружает все изображения только после того, как на странице запущено событие прокрутки. До этого он отображает «загружаемое» изображение.
- Я добавил javascipt на
window.onload
событие для изменения размера элемента<div>
при щелчке по изображению. И некоторый javascript, который идентифицирует браузер и устанавливает источник видеотеки соответственно. - Все изображения визуализируются внутри datalist и привязаны к базе данных.
- Как изображение загружает изображение только после события прокрутки, я добавил код на загрузку страницы для искусственного прокрутки страницы с помощью пикселя.
Проблема:
открыть ту же страницу в IPad (IOS 8,4) на хроме или сафари. Все мои 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();
вызывается в пределахwindow.onload
. Таким образом, если window.onload не запускается, он не делает каких-либо проблем для удаления рассылки. - Я добавил предупреждение() на
window.onload()
, но в этом случае все работает отлично.
Все функциональные возможности отлично работает на всех устройствах, кроме IPad с прошивкой 8.4 (она прекрасно работает даже в более ранних ОС)
Помощь/Suggessions очень ценятся.
EDIT:
Я нашел один jsconsole, через которую мы можем увидеть журналы консоли в IPad на рабочем столе. Here - как мы можем его использовать.
Я проверил журналы и обнаружил, что, когда я получаю ошибку JQMIGRATE: jQuery.browser is deprecated
, My window.onload
событие не срабатывает. Принимая во внимание, что если я получаю журнал JQMIGRATE: Logging is active
, все работает нормально. Моя jqmigrate
ссылки на главной странице, как,
<script type="text/javascript" async src='/js/jquery-migrate-1.1.1.js'></script>
'Как обнародует загружает изображение только после того, как событие прокрутки, я добавил код на странице загрузке для прокрутки страницы с помощью пиксельной artificially.' Почему бы не просто запустить событие прокрутки ??? –
'Я добавил alert() в window.onload(), но в этом случае все работает отлично, звучит как асинхронная проблема, запускается окно onload перед запуском скрипта' unveil'. Любая ошибка в консоли? Вы включаете скрипт после загрузки документа? Я спрашиваю об этом, но если я, это должно быть проблемой во всех браузерах/ОС, если сценарий не кэширован –
@ A.Wolff: 1. Я вызвал событие прокрутки (обновляется в вопросе) 2. Есть ли способ проверить консоль в iPad? в любом браузере на рабочем столе нет ошибок. –