我最近看到一些使用这种模式的网站:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function (){...do some stuff with plugins...});
</script>
</head>
<body>
<script src="myplugin1.js"></script>
<script src="myplugin2.js"></script>
<script src="myplugin3.js"></script>
</body>
</html>
这让我想到了一些陷阱:
Question #1
document.ready
解析插件(JS)后,事件被引发而不执行。
它在 dom 时执行结构已经完成了。 (注意:我没有说:“当所有资源都已使用时下载的" !)
所以可能存在这样一种情况document. ready
函数将尝试使用尚未完全下载的插件变量。 (这会导致错误)。
我对吗 ?
Question #2
This leads me to : "never use document.ready" before the script references location ( I mean : in situations where document.ready is dependent on those script variables).
我对吗 ?
附注我不是在谈论 window.load ,它显然可以在这里工作,但我将不得不等待更长时间。
如果您考虑页面中的所有类型的资源,许多资源可以与页面内容分开加载:例如图像和样式表。它们可能会改变页面的外观,但不能真正改变结构,因此单独加载它们是安全的。
另一方面,脚本有一个叫做document.write
这可能会给工作带来麻烦。如果我有一些像这样的 HTML:
Who would <script>document.write("<em>");</script>ever</em> write like this?
然后浏览器就会很好地解析它;document.write
,如果像这样在顶层使用,则可以有效地在要解析的位置插入 HTML。这意味着页面的其余部分取决于脚本元素,因此在加载该脚本之前浏览器无法真正继续处理文档。
因为脚本可能会修改 HTML 并更改结构,所以浏览器迫不及待地要稍后加载它们:它必须在那一刻加载它们,并且不能说 DOM 已准备好,因为脚本可能会修改它。因此,浏览器必须延迟 DOM 就绪事件,直到所有脚本都运行完毕。这使您可以安全地将依赖代码放在就绪处理程序的顶部。
但是,我建议您不要这样做,因为这还不是很清楚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)