Window Onload-Ereignis wird in ipad ios 8.4 nicht ausgelöst
Ich stehe vor folgendem seltsamen Problem:
Funktionalität:
Wenn ich meine Website-Seite öffne, die viele Bilder enthält und für die clientseitige Funktionalität JavaScript / JQuery verwendet. Wenn Sie auf ein Bild klicken, ändern alle anderen Bilder ihre Deckkraft und das ausgewählte Bild zeigt ein<div>
enthält einige Informationen und ein Video für das Bild.
window.onload
event zum Ändern der Größe des<div>
-Element, wenn auf das Bild geklickt wird. Und etwas Javascript, das den Browser identifiziert und die Video-Tag-Quelle entsprechend einstellt.Alle Bilder werden in einer Datenliste gerendert und aus der Datenbank gebunden.Als Enthüllung das Bild erst nach dem Bildlauf lädt, habe ich beim Laden der Seite einen Code hinzugefügt, um eine Seite künstlich um ein Pixel zu scrollen.Problem
Ich öffne dieselbe Seite in iPad (iOS 8.4) auf Chrome oder Safari. All mein Javascript unterwindow.onload
feuert nicht.
ASPX Seite:
<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 Code:
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 Code:
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);
}
Things habe ich noch versucht:
Ich dachte, JQuery Enthüllung könnte die Seite langsam machen oder so. Also habe ich den Anruf entfernt, aber das Problem ist dasunveil();
heißt innerhalb vonwindow.onload
. Wenn also window.onload nicht ausgelöst wird, ist es nicht sinnvoll, die Enthüllung zu entfernen.Ich habe einen Alert () am @ hinzugefügwindow.onload()
, aber in diesem Fall funktioniert alles perfekt.All die Funktionalität funktioniert perfekt auf allen Geräten außer iPad mit iOS 8.4 (es funktioniert großartig, auch in früheren Betriebssystemen)
Hilfe / Suggessions werden sehr geschätzt.
BEARBEITEN
Ich habe einen gefunden jsconsole, über das wir die Konsolenprotokolle auf dem iPad auf dem Desktop sehen können.Hie ist, wie wir es benutzen können.
Ich habe die Protokolle überprüft und festgestellt, dass, wenn ich eine Fehlermeldung erhalte,JQMIGRATE: jQuery.browser is deprecated
, Meinwindow.onload
Event wird nicht ausgelöst. Wohingegen, wenn ich log @ bekomJQMIGRATE: Logging is active
, alles funktioniert gut. Meinjqmigrate
Referenz ist in der Masterseite als,
<script type="text/javascript" async src='/js/jquery-migrate-1.1.1.js'></script>