jQuery $(window).load();事件不会在没有 <!DOCTYPE> 声明的页面上触发?(...在 Chrome 扩展程序内容脚本中)



我正在处理操纵网页的Google Chrome扩展程序,但是在部分加载(DOM)或满载(带有图像)之后。

现在似乎许多网站都使用

<!DOCTYPE html>

声明或某些变化,但许多其他人没有。问题主要是关于HTML医生的...我不确定其他人。

可以肯定地假设,如果网页没有Doctype声明,则$(window).load();不会被解雇?

一开始我使用$(document).ready();(对于加载DOM时),但后来切换到$(window).load();(也让图像也加载)。

问题是,现在$(window).load();如果没有Doctype,似乎不起作用。$(document).ready();似乎在所有页面上都可以使用,无论是否宣布医生。

也许这对具有同一问题的其他人可能很有用。我搜索了一些,找不到决定性的答案。看来我最终会使用类似的东西:

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()方法通常与<body onload="">属性不相容。如果必须使用负载,则请勿使用.Dready()或使用JQuery的.load()方法将加载事件处理程序连接到窗口或更具体的项目,例如图像。

最新更新