我知道,当您想在 HTML body 部分中调用 JavaScript 函数时,您可以通过放入 body 标记中来实现<script> someFunction(); </script>,这是一个示例,我有这样的 HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript"
src="/Script.js"></script>
</head>
<body>
<script>
showAlert();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
javascript 文件如下:
function showAlert(){
alert("This is an alert!");
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我将 JavaScript 文件引用放在正文的末尾,如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<script>
showAlert();
</script>
<script type="text/javascript"
src="/Script.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
该函数showAlert()不再被调用。您能回答以下2个问题吗:
showAlert()在第二种情况下没有被调用?我之所以问这个问题,是因为我知道在正文末尾而不是头部引用 JavaScript 文件是一个很好的做法,这样页面将在加载所有 JavaScript 代码之前首先呈现。
1) 脚本是线性加载的。由于脚本尚未加载,因此该函数未定义。(这与脚本内的函数提升形成对比。)
2)只需等待页面加载即可。
window.onload = function(){
showAlert();
}
Run Code Online (Sandbox Code Playgroud)
(window.onload = showAlert由于原因#1,仅仅这样做是行不通的。在这里,您可以延迟评估,直到该函数存在为止。)