iPad ios 8.4 中不会触发窗口 onload 事件

2024-01-02

我面临以下奇怪的问题:

功能:
当我打开我的网站页面时,该页面包含许多图像并使用 Javascript/jQuery 作为客户端功能。单击每个图像时,所有其他图像都会更改其不透明度,并且所选图像会显示<div>包含一些信息和图像的视频。

  1. 我使用了 jQuery Reveal,它仅在页面上触发滚动事件后才加载所有图像。在此之前,它会显示“正在加载”图像。
  2. 我已经添加了一个Javascriptwindow.onload调整大小的事件<div>单击图像时的元素。还有一些 Javascript 可以识别浏览器并相应地设置视频标签源。
  3. 所有图像都呈现在数据列表内,并与数据库绑定。
  4. 由于 Reveal 仅在滚动事件后加载图像,因此我在页面加载时添加了一段代码,以人为地按像素滚动页面。

Problem:
我在 Chrome 或 Safari 上的 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 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);
}

我已经尝试过的事情:

  1. 我认为 jQuery 发布可能会使页面变慢或者其他什么。所以,我删除了通话,但问题是unveil();被称为内window.onload。因此,如果window.onload没有被解雇,揭开面纱没有任何意义。
  2. 我添加了一个alert() on window.onload(),但在这种情况下,一切都很完美。

所有功能在除 iOS 8.4 的 ipad 之外的所有设备上都能完美运行(即使在早期操作系统中也能正常运行)

非常感谢帮助/建议。

EDIT:
我找到了一个js控制台 http://jsconsole.com通过它我们可以在桌面上看到iPad中的控制台日志。Here https://blog.idrsolutions.com/2015/02/remote-debugging-ios-safari-on-os-x-windows-and-linux/就是我们如何使用它。
我检查了日志,发现当我收到错误时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>

我最近也遇到了这个问题。听起来和你的 Shubham 的情况类似。

TL;DR:

各种版本的 iOS8 似乎都会阻止窗口加载在以下情况下触发:<audio> or <video>标签包含属性preload="none"(也许还有其他变化)

对我来说这是没有意义的,因为“无”的预加载实际上不应该尝试加载媒体数据,那么为什么它会干扰窗口加载?

进一步解释:

在我帮助建立的一个 Wordpress/WooCommerce 网站中,该客户有几名员工都使用 iPhone iOS 8.4.1。三个使用 iPhone 5,一个使用 iPhone 6。其中两个使用 iPhone 5 有问题,另一个 iPhone 5 用户和 iPhone 6 用户没有这样的问题,所以最初我认为问题在于一些 jQuery 的顺序/速度插件可能已加载。

症状是,诸如应该扩展/收缩的移动导航和 AJAX 搜索功能之类的东西对于这些用户来说会失败,并且根本无法运行,但测试的所有其他浏览器/桌面/Android 都很好。

该网站销售音频产品,其中许多都带有音频预览。经过一些(大量!)测试后,我意识到用户在没有音频标签的页面上没有这个问题。

所以我搜索了iOS8, 窗口加载 and 音频错误我发现了这两个小宝石,其中包含与不同版本的 iOS 上的音频问题相关的评论:

(用户“tommusrhodus”)

如果你的页面中有任何 或 标签,那么它目前在 iOS8 safari 中会被破坏,如果这些标签存在于 DOM 中,它永远不会触发 window.onload 事件。

https://github.com/codevise/pageflow/issues/118 https://github.com/codevise/pageflow/issues/118(用户“lufes”):

该问题与 window.onload 事件有关,如果有设置了 preload="none" 属性的视频或音频,则不会触发该事件。一旦每个资源加载完毕,window.onload 就会运行,而 iOS 8 会一直等待视频加载,但这是永远不会发生的。

因此,对我来说,解决方案 - 因为我不想破解 Wordpress 核心 - 就是通过 jQuery 在就绪回调中完全删除预加载属性,该回调将在窗口加载之前触发,如下所示:

$("audio").removeAttr("preload");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPad ios 8.4 中不会触发窗口 onload 事件 的相关文章

  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • 如何向 jquery-file-upload basic-plugin 添加取消上传按钮

    我正在使用 jquery file upload 和 Rails 4 我从https github com tors jquery fileupload rails paperclip example https github com to
  • 在 jQuery 可排序中对多个选定项目进行排序?

    我试图在 jQuery 可排序集中选择多个项目 然后将选定的项目一起移动 这是我的弱点开始尝试使其发挥作用 http jsfiddle net benstenson CgD8Y 这是代码 HTML div class container d
  • 如何调用 google 的 getBasicProfile() 来仅单击按钮即可登录 google?

    我在我的网站上使用谷歌登录
  • Jquery 在 DIV 中进行多重加载

    这是我的代码 right load textes html nicolas right load textes html antoine 问题是内容divantoine覆盖了右边div nicolas加载的内容div div right l
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 如何限制下拉列表更改而不禁用它

    如何在不禁用下拉列表的情况下限制下拉列表选项更改 意味着我无法更改选项 并且下拉列表不应该是只读的 我的问题是我的服务器没有读取禁用的元素 这是我的出价 http jsfiddle net m3v7y jQuery var lastSel
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • 无法使用 HTML 设置未定义 jQuery UI 自动完成的属性“_renderItem”

    我使用以下代码将 jQuery UI 自动完成项呈现为 HTML 这些项目在自动完成控件中正确呈现 但我不断收到此 JavaScript 错误并且无法移动过去 Firefox 无法转换 JavaScript 参数 Chrome 无法设置未定
  • Jquery 移动应用程序的奇怪行为

    我创建了一个应用程序 其中包含多个主页按钮 单击其中一个按钮 我的应用程序将重定向到某个视图 其中包含 JQM 表单 JQM 日历 文本字段 按钮和数据库等 我的问题是 当我在 Android 设备上测试我的应用程序时 即使我没有使用任何图
  • 检查外部 JS 库是否已加载[重复]

    这个问题在这里已经有答案了 我当前的设置是用户单击链接来动态加载内容 其中还包括加载脚本 我希望能够测试是否加载了外部脚本 特别是 Google Maps JS API 如果没有加载 则继续执行此操作 这是我的代码 if href cont
  • 滚动时将菜单栏固定在顶部[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我见过一些网站 当用户向下滚动页面时 会在右侧或左侧弹出一个框 另外 注意到这个模板 http www mvpthemes com m
  • IE8 中字符串的 indexOf 的替代函数是什么?

    我用过indexOf检查句子中是否存在特定文本 如下所示 var temp temp data not available if temp indexOf datas 0 alert True else alert false 我面临的问题
  • 通过 jQuery 选择动态 HTML 元素

    我正在构建一个 ASP NET MVC 应用程序 并且正在使用jQuery Blueimp https github com blueimp jQuery File Upload动态添加到页面的 PartialView 上的插件 根据插件的
  • jquery中如何使用load函数发送数据

    我想用 jquery load 函数发送字符串数据 但它没有发送 我的代码是 function dialog data function alert data var ph Org1 ph empty ph load FrontEnd Do
  • MailTo 从 Javascript

    我有一个链接按钮 用于从页面内容构建邮件 从 javascript 启动它而不打开空白窗口或干扰调用它的窗口的最佳方法是什么 function Email var sMailTo mailto var sBody var alSelecte
  • 在 jQuery .live() 方法中模拟“焦点”和“模糊”

    Update 从 jQuery 1 4 开始 live 现在支持focusin and focusout events jQuery http www jquery com currently1 doesn t support blur o
  • Ajax - 限制列表的加载,然后在滚动上加载其余部分

    我有一家商店 在一个页面上显示某个类别的所有产品 这是店主喜欢的方式 因此不能选择分页 为了缩短某些重类别的加载时间 我希望实现一个可以加载许多产品的脚本 li s然后在页面滚动上加载另一组 页面就是用这个结构生成的 div ul clas
  • 销毁 JQuery 可拖动对象

    我有一组可拖动的元素 如何删除可拖动功能 draggable draggable disable 对我来说不是一个选择 draggable draggable destroy 回报Uncaught TypeError Cannot read
  • JQuery:将 FormData 和 csrf 令牌一起发布

    Is the data 下面的行正确吗 我想将表单数据和 csrf 令牌发布到 Django 视图函数 file upload on change function var currentpath window location pathn

随机推荐