我遇到了Firefox和Dojo的奇怪行为。我有在<头>节这几行HTML页面:dojo.require()阻止Firefox呈现页面
...
<script type="text/javascript" src="dojo.js" djconfig="parseOnLoad: true, locale: 'de'"></script>
<script type="text/javascript">
dojo.require("dojo.number");
</script>
...
有时在页面加载正常。但有时它不会。 Firefox将获取整个html页面,但不会呈现它。我只看到一个灰色的窗户。
经过一番实验后,我发现渲染问题与html的加载时间有关。 Firefox在加载时开始评估html页面。如果页面需要太长的时间才能加载上面的javascript,那么在html完成加载之前将执行该JavaScript。
如果发生这种情况,我会得到灰色的窗口。建议Firefox向我展示页面的源代码将显示正确的完整HTML代码。但是:如果我的页面保存到磁盘(文件 - >页面另存为...),HTML代码将被截断,上述部分将是这样的:
...
<script type="text/javascript" src="dojo.js" djconfig="parseOnLoad: true, locale: 'de'"></script>
<script type="text/javascript">
dojo.require("dojo.number");
</script></head><body></body></html>
这就解释了为什么我能看到一个灰色地带。但为什么这个代码出现在那里?我认为Dojo的require()方法做了一些“邪恶”的事情。但我无法弄清楚什么。没有write.document(“</head > <body> </body > </html >”);在Dojo代码中。我检查了它。
如果我放置dojo.require(“dojo.number”),问题将被修复。声明在window.load事件:
<script type="text/javascript">
window.load=function() {
dojo.require("dojo.number");
}
</script>
但我很好奇为什么会发生这种情况。是否有Javasctript函数强制Firefox停止评估页面? Dojo会做一些“坏”的事吗?任何人都可以向我解释这种行为吗?
编辑:Dojo 1.3.1,没有JS错误或警告。
您是否尝试安装Firebug并查看页面实际加载的方式?你还在用什么版本的dojo? – Kitson 2009-12-21 22:38:56
除了查看如何在Firebug网络面板中加载页面,您是否尝试过检查是否存在任何JS错误? – Annie 2009-12-21 22:43:11
Firebug让我发现时机会触发它。但没有更多有用的信息。 – 2009-12-21 22:43:19