gpt4 book ai didi

javascript - dojo.require() 阻止 Firefox 呈现页面

转载 作者:行者123 更新时间:2023-11-28 03:48:33 25 4
gpt4 key购买 nike

我在使用 Firefox 和 Dojo 时遇到了奇怪的行为。我在 部分有一个包含这些行的 html 页面:

...
<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 完成加载之前执行。

如果发生这种情况,我将获得灰色窗口。建议 Firefox 向我显示页面的源代码将显示正确的完整 html 代码。但是:如果我将页面保存到磁盘(文件->将页面另存为...),html 代码将被 chop ,上面的部分将如下所示:

...
<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("");在道场代码中。我查过了。

如果我放置 dojo.require("dojo.number"); 问题就会得到解决window.load 事件中的语句:

<script type="text/javascript">
window.load=function() {
dojo.require("dojo.number");
}
</script>

但我很好奇为什么会这样。是否有强制 Firefox 停止评估页面的 Javasctript 函数? Dojo 会做一些“坏事”吗?任何人都可以向我解释这种行为吗?

编辑:Dojo 1.3.1,没有 JS 错误或警告。

最佳答案

页面的其余部分是什么样的?哪些元素应该渲染而不是?你还有什么其他的 Javascript?

您拥有的看起来不错,但是在页面加载之前您将无法使用 dojo.number 中的方法或通过 dojo.require 加载的任何其他内容——您必须等待 window.onload 触发,或使用dojo.addOnLoad() 方法触发回调。后者实际上比 onload 快一点。

dojo.require 使用 synch xhr 来加载它会阻塞浏览器,因此如果加载异常缓慢,您会注意到页面呈现延迟。

关于javascript - dojo.require() 阻止 Firefox 呈现页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com