【发布时间】:2012-04-12 15:41:24
【问题描述】:
我正在尝试找出我继承的一些代码的问题。
我有一个 HTML 页面
<script type="text/javascript" src="file1.js" defer="defer"></script>
<script type="text/javascript" src="file2.js" defer="defer"></script>
</body>
</html>
file1.js 有
FOO = {
init : function () {
var bar = BAR;
}
}
$(document).ready(FOO.init);
file2.js 有
var BAR = {
}
由于元素上的 defer 属性,可以安全地假设当.ready() 调用FOO.init() 时BAR 可能仍然未定义b/c file2.js 中的代码还没有由于延迟执行而尚未执行?
这将匹配我试图追踪的错误(仅在 IE 中偶尔发生),但我真的想了解 为什么在我着手解决方案之前会发生这种情况。我不知道最初的开发者为什么使用defer,除了对“他必须”这样做的含糊赞扬。
【问题讨论】:
-
没有答案,但我对你有感觉,伙计。
-
你了解
defer属性吗?因为在我看来这是一件很常见的事情...... -
我猜原开发者希望在 file1.js 和 file2.js 之前加载另一个脚本(或者他不知道 $(document).ready()...)
-
@DanielRibeiro,我了解developer.mozilla.org/En/HTML/Element/Script 上记录的有关它的内容,但我从未使用过它。
-
嗯,根据文档,
...since this feature (defer) hasn't yet been implemented by all other major browsers, authors should not assume that the script’s execution will actually be deferred.是等待加载文档,而不是一些特定的脚本。
标签: javascript jquery deferred-loading