为啥 iPad 有时不触发 onload 事件?

Posted

技术标签:

【中文标题】为啥 iPad 有时不触发 onload 事件?【英文标题】:Why does iPad not fire onload events sometimes?为什么 iPad 有时不触发 onload 事件? 【发布时间】:2013-09-13 01:22:35 【问题描述】:

我注意到在我正在构建的一个网络应用程序上,当在 iPad 上查看时,jQuery .load() onload 处理程序没有被调用有时(有时它起作用,不确定原因是什么) .我什至尝试过

<iframe onload="alert(9)" ...

测试它,警报没有弹出。是否有已知的错误或解决方法?这是一个使用 a workaround like this 的 iframe,不知道这是否有区别。

【问题讨论】:

【参考方案1】:

您的 javascript 代码的其余部分是否可以在 iPad 上运行?

JavaScript 可能在您的 Safari 设置中被禁用。

【讨论】:

抱歉,忘了说它是间歇性发生的。刚刚更新了问题。 我不得不得出结论,有时 Safari 有理由认为内容尚未从服务器完全加载,这使得加载事件不会触发。您是否尝试过准备好文档? 另外,您是否尝试过这种解决方法:$("#myIFrame").load(function () alert("something"); ); - 基本上,只需将 id 分配给 iFrame 并使用 id 选择它? 这会比设置onload="alert..." 更好吗?为什么更改选择器会使加载工作? 测试第一定律:如有疑问,请遵循最佳实践。【参考方案2】:

iPad 在滚动期间阻止 js... 也许您在页面实际加载之前开始滚动,因此不会触发“加载”

但据我了解,它应该在滚动停止时触发......

只是一个想法,希望对你有帮助

【讨论】:

【参考方案3】:

我没有解决方案,但有一定的确定性作为答案:

jQuery 团队had and has problems,为我们提供了可靠的 .load() 方法, 这几乎可以肯定意味着它不可靠并且没有已知的解决方法:

它不能始终如一地工作,也不能可靠地跨浏览器 如果图像 src 设置为与之前相同的 src,它不会在 WebKit 中正确触发 它没有正确地冒泡 DOM 树 可以停止为已经存在于浏览器缓存中的图像触发

在这里找到:https://***.com/a/12318079/444255

【讨论】:

以上是关于为啥 iPad 有时不触发 onload 事件?的主要内容,如果未能解决你的问题,请参考以下文章

页面加载事件--DOMContentLoaded

img onload 不触发,img onload 不执行

JS中使用innerHTML后元素的onclick事件为啥不能触发了?

JS 页面加载触发事件 document.ready和onload的区别

JS 页面加载触发事件 document.ready和onload的区别

JS 页面加载触发事件 document.ready和window.onload的区别