我遇到了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