为什么Chrome会尽早加载和执行脚本?

时间:2018-01-11 16:01:48

标签: javascript google-chrome

我的Chrome似乎在执行脚本时做了一些奇怪的事情。

代码:

<!DOCTYPE html>
<html>
<head>
    //Metadata
</head>
<body>
    //Page Content
    <script type="text/javascript" src="somescript.js"></script>
</body>
</html>

在Firefox中,脚本在加载页面内容后执行,如预期的那样。但是,在Chrome中,脚本似乎在页面内容加载之前执行,同时冻结加载(我使用prompt()测试了这一点 - 页面拒绝加载直到它被解析)。

这种行为的原因是什么,可以修复吗?我使用的是Chrome版本63.0.3239.132。

1 个答案:

答案 0 :(得分:2)

使用src - 属性的注入脚本在chrome中异步执行。 这是因为通常这种方式用于包含脚本文件,其中包含方法定义/类等 - 而不是自启动执行。

为确保其按预期工作,请直接在脚本标记中包含代码:

<body>
    //Page Content
    <script type="text/javascript">content of somescript.js</script>
</body>

或者将执行包装到该文件中的一个方法中,您可以使用该方法执行(如果您有jquery)

$( document ).ready(function() {
    doTheThingFromScript();
});

或旧时尚

<body onload="doTheThingFromScript()">

在这两种情况下,您都应该将脚本文件包含在网站的头部。