El evento de carga de la ventana no se dispara en ipad ios 8.4
Estoy enfrentando el siguiente problema extraño:
Funcionalidad
Cuando abro la página de mi sitio web que tiene muchas imágenes y tengo javascript / jquery utilizado para la funcionalidad del lado del cliente. Al hacer clic en cada imagen, todas las demás imágenes cambian su opacidad y la imagen seleccionada muestra un<div>
que contiene información y un video para la imagen.
window.onload
evento para cambiar el tamaño de la<div>
elemento cuando se hace clic en la imagen. Y algunos javascript que identifican el navegador y configuran la fuente de la etiqueta de video en consecuencia.Todas las imágenes se representan dentro de una lista de datos y se vinculan desde la base de datos.A medida que desvela carga la imagen solo después del evento de desplazamiento, he agregado un código en la carga de la página para desplazar una página por un píxel artificialmente.Problema:
Abro la misma página en iPad (iOS 8.4) en Chrome o Safari. Todos mis javascript bajowindow.onload
no dispara
Página 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>
Código 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('~'));
}
Código 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);
}
Cosas que ya he probado:
Pensé que jquery desvelar podría hacer que la página fuera lenta o algo así. entonces, eliminé la llamada pero el problema es elunveil();
se llama dentrowindow.onload
. Por lo tanto, si window.onload no se está activando, no tiene sentido eliminar la revelación.Agregué una alerta () enwindow.onload()
, pero en este caso, todo funciona perfecto.Toda la funcionalidad funciona perfectamente en todos los dispositivos excepto ipad con ios 8.4 (funciona muy bien incluso en sistemas operativos anteriores)
Ayuda / Sugerencias son muy apreciadas.
EDITAR:
encontré unojsconsole a través del cual podemos ver los registros de la consola en iPad en el escritorio.aquí es cómo podemos usarlo.
Revisé los registros y descubrí que cuando recibo un errorJQMIGRATE: jQuery.browser is deprecated
Miwindow.onload
El evento no se dispara. Considerando que, si me registroJQMIGRATE: Logging is active
Todo funciona bien. Mijqmigrate
la referencia está en la página maestra como,
<script type="text/javascript" async src='/js/jquery-migrate-1.1.1.js'></script>