我的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。
答案 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()">
在这两种情况下,您都应该将脚本文件包含在网站的头部。