为啥 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 事件?的主要内容,如果未能解决你的问题,请参考以下文章
JS中使用innerHTML后元素的onclick事件为啥不能触发了?
JS 页面加载触发事件 document.ready和onload的区别