Javascript Firefox中脚本标记中的async属性

Javascript Firefox中脚本标记中的async属性,javascript,html,firefox,asynchronous,Javascript,Html,Firefox,Asynchronous,我试图在Firefox 13.0.1中测试以下代码,但它无法正常工作: <!DOCTYPE html> <html> <head> <title>Exercise 1</title> <script type="text/javascript" async src="example1.js"></script> <script type="text/j

我试图在Firefox 13.0.1中测试以下代码,但它无法正常工作:

<!DOCTYPE html>
<html>
    <head>
        <title>Exercise 1</title>
        <script type="text/javascript" async src="example1.js"></script>
        <script type="text/javascript" async src="example4.js"></script>
        <script type="text/javascript" src="example3.js"></script>
    </head>
    <body>
        <p>Hello world</p>
    </body>
</html>
//示例3.js

alert("I'm the example 3");
//示例4.js

alert("I'm the example 4");
当我打开包含上述html代码的文件时,会发生以下情况:

我编辑我遵循的流程

  • 首先,执行脚本“example3.js”,然后出现一个带有文本“我是示例3”的弹出窗口。然后,我单击弹出窗口中的OK按钮
  • 在第二个位置,执行脚本“example4.js”,然后出现一个带有文本“我是示例4”的弹出窗口。然后,我单击弹出窗口中的OK按钮
  • 在第三个位置,执行脚本“example1.js”,然后出现一个带有文本“我是示例1”的弹出窗口。然后,我单击弹出窗口中的OK按钮
  • 最后,应该显示正文内容(段落中有文本“Hello World”),但它不是在Firefox中显示,而是在Chrome中显示。在Firefox中,页面加载不会停止
  • 如果在执行最后一个脚本后在Firefox中打开Firebug,我会意识到浏览器不会接收body元素

    我不知道我的代码是正确的还是来自Firefox的bug


    谢谢。

    这是firefox中已经报道过的一个错误:

    这就是为什么将js放在页面底部是一个很好的做法:)我相信在Chrome中,警报可能会阻止线程(因此只有在所有三个线程都被单击后才会显示),上面的示例工作正常,但在firefox中没有。在Firefox中,当最后一个脚本(example1.js)被执行时,我点击弹出窗口中包含警告消息的OK按钮,然后body元素中的内容应该被显示,但它没有。正如@flaviotsf所说,我认为最后执行的脚本会阻塞主线程,但这不会发生在Chrome中,只会发生在Firefox中;它不是警报,而是工作。因此,我认为您不能使用任何不使用document.write的异步脚本和可能阻止UI线程(如警报)的代码。但是在W3C文档中还没有看到这一点。感谢您的回复。上面的例子是我自己编的,所以不在别的地方。我不知道警报消息可能会阻止UI线程。我想,一旦我点击了警报弹出窗口中的OK按钮,UI线程就被解锁了。无论如何,我仍然不明白为什么它在Chrome中工作得很好,但在Firefox中却不行。最简单的例子是:带有警报的异步脚本,然后任何同步脚本(不仅在head中)都会中断对文档以下部分的加载/解析。FF14也受到影响。
    alert("I'm the example 4");