标签:不同 依赖 不同的 文档 def 解析 完成 set 默认
<script>
元素<script>
元素向HTML中插入Javascript的主要方法就是通过<script>
元素,所以它是一个HTML元素。HTmML4.01为<script>
定义了下列6个属性。
text/javascript
一般使用<script>
元素内部的JavaScript代码时,只需为它指定 type 属性,如下:
<script type="text/javascript">
function sayHi(){
alert("Hi!")
}
</script>
注意!!! 不要在代码中任何地方出现“
</script>
”,因为出现此标签,解析器就会认为这是结束标签而出现错误,解决方法是 将结束标签转义后<\/script>
。
外部js文件引用需要制定src属性,如下:
<script type="text/javascript" src="example.js"></script>
按照惯例,所有的 <script>
元素都应该放到页面的 <head>
元素中,如下:
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
<script type="text/javascript" src="example.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
但是这样会阻塞页面渲染,因为解析器是单线程解析文档对象,所以在开发中一般会将<scrit>
元素放到页面元素之后,如下:
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<!-- 这里是内容 -->
<script type="text/javascript" src="example.js">
</body>
</html>
之前提过,HTML 4.01 为<script>
标签定义了 defer 属性。这个属性让脚本在执行时不会影响页面的构造,即告诉脚本会被延迟到整个页面解析完成后再运行。 立即下载,延迟运行
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
<script type="text/javascript" defer="defer" src="example.js">
</head>
<body>
<!-- 这里是内容 -->
</body>
</html>
HTML5 为<script>
元素定义了async属性。这个和 defer 属性类似,都用于改变处理脚本行为。同样只适用于外部脚本,但不同的是:async属性并不保证按照指定他们的顺序先后执行:
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
<script type="text/javascript" async src="example1.js">
<script type="text/javascript" async src="example2.js">
</head>
<body>
<!-- 这里是内容 -->
</body>
</html>
上面代码中,第二个脚本可能先于第一个脚本执行。所以运用此属性,首先要确保两个文件之间不互相依赖,异步脚本不要在加载期间修改DOM
<noscript>
元素此元素存在是因为早起浏览器遇到当浏览器不支持JavaScript时如何让页面平稳的退化。以替代不支持<script>
的浏览器页面:
<html>
<head>
<title>Example Page</title>
<script type="text/javascript" async src="example1.js">
<script type="text/javascript" async src="example2.js">
</head>
<body>
<!-- 这里是内容 -->
<noscript>
<p>本页面需要浏览器开启支持JavaScript</p>
</noscript>
</body>
</html>
标签:不同 依赖 不同的 文档 def 解析 完成 set 默认
原文地址:https://www.cnblogs.com/mrjungle-home/p/12587776.html