html中script脚本的存放位置项目开发久了,尤其是长期使用开发工具的快捷键实现html默认文档,突然使用txt创建
项目开发久了,尤其是长期使用开发工具的快捷键实现html默认文档,突然使用txt创建html文档,竟对标签的存放位置产生了不确定性。
下面是最通用的html文档标签存放模板:
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>这是标题</title>
<meta charset="utf-8">
<style>
</style>
</head>
<body>
<p>欢迎打开...</p>
<script>
console.log('页面显示成功')
</script>
</body>
</html>
script标签位置
html文件时自上而下的执行方式,js载入完后,是立即执行的,执行完后,body开始渲染,所以不同位置的script代码块位置影响甚大。
当需要获取文档中的dom节点时
- script标签放在head中,这时节点就会获取不到
- 放在body闭合标签之前,正常获取
此时还没有生成dom,所以不能将需要访问的dom元素的相关js逻辑放在body之前
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>这是标题</title>
<meta charset="utf-8">
<style>
</style>
<script>
let theP = document.getElementByTagName('p')[0];
console.log(theP) // undefined
</script>
</head>
<body>
<p>欢迎打开...</p>
<script>
console.log('页面显示成功');
let pTag = document.getElementByTagName('p')[0];
console.log(pTag) //
</script>
</body>
</html>
js代码执行会阻塞页面渲染
js进入死循环,控制台不断打印1,页面一直是加载状态,html标签无法渲染出来
<head>
<script>
while(true){
console.log(1)
}
</script>
<head>
script标签如果要放在head标签中
页面的实现效果,需要预先加载一些js脚本,可以使用以下方式实现
window.onload=function(){}
或者
documnet.ready=function(){}
转载自:https://juejin.cn/post/6993370351560294414