是jQuery $(window).load(); 没有声明的页面上没有触发事件? (…在chrome扩展内容脚本中)
我正在开发一个操纵网页的Google Chrome扩展程序,但是在部分加载(DOM)或完全加载(带图像)之后。
现在似乎很多网站都使用了
声明,或其中的一些变体,但许多其他人没有。 问题主要是关于HTML doctypes …我不确定其他人。
假设如果网页没有DOCTYPE声明,则可以安全地使用$(window).load(); 不会被解雇?
一开始我使用$(document).ready(); (对于加载DOM时),但后来切换到$(window).load(); (也让图像加载)。
问题是,现在$(window).load(); 如果没有DOCTYPE似乎不起作用。 $(文件)。就绪(); 无论是否声明DOCTYPE,似乎都适用于所有页面。
也许这对于有同样问题的其他人有用。 我搜索了一下,没有找到决定性的答案。 看来我最终会使用这样的东西:
if (window.document.doctype != null) {$(window).load(checkEntries);} if (window.document.doctype == null) {$(document).ready(checkEntries);}
我想我的问题是……这是正常的,必须检查DOCTYPE以了解使用哪个事件? 或者我在这里遗漏了什么?
基本上,为什么$(window).load(); 如果没有DOCTYPE声明,似乎不会开火?
基本上,你不应该使用$(window).load(),因为它不是完全支持的。 如果你确实需要它,那么你上面的解决方案是你能做的最好的。 jQuery页面很好地总结了这些警告:
与图像一起使用时加载事件的注意事项
开发人员尝试使用.load()快捷方式解决的常见挑战是在图像(或图像集合)完全加载时执行函数。 应该注意有几个已知的警告。 这些是:
- 它不能一致地工作,也不能可靠地跨浏览器
- 如果图像src设置为与之前相同的src,则它在WebKit中无法正确触发
- 它没有正确地冒泡DOM树
- 可以停止为已经存在于浏览器缓存中的图像触发
url: http : //api.jquery.com/load-event/
.ready()
方法通常与属性不兼容。 如果必须使用load,则不要使用.ready()或使用jQuery的
.load()
方法将加载事件处理程序附加到窗口或更具体的项目(如图像)。