这是我的代码:
<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
</head>
<body>
<script>
console.log('test')
</script>
<p>
Foo
</p>
</body>
</html>
我想将此代码中的JavaScript从<body>
移动到<head>
。这是我不正确的尝试:
<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
<script>
window.onload = function () {
console.log('test')
}
</script>
</head>
<body>
<p>
Foo
</p>
</body>
</html>
这当然不符合我的要求。它只在整个页面加载后运行JavaScript。但是我想在定义<body>
后立即运行JavaScript。可以用JavaScript完成吗?
将您的日志命令插入到Html的<head>
部分的已定义的Javascript函数中,并在<body>
打开后立即调用此函数。
你的最终代码将是这样的:
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction(){
console.log('test');
}
</script>
<title>Foo</title>
</head>
<body>
<script>
myFunction();
</script>
<p>
Foo
</p>
</body>
</html>
值得一提的是,onload事件属性确实存在于另一个html标签中,并且只有在这些情况下它才会在定义后立即执行,这意味着:立即执行。
使用<body>
标签会发生奇异的事情:onload仅在两个条件之后运行:
1)</body>
的明确定义;
2)完成所有附件的加载以及可能的外部例程和资源,这意味着:加载所有html,css,jpg,gif,svg等。
因此,onload执行它所承诺的内容:在页面100%加载时运行。