我们在 《Javascript简史》这遍文章中说过,「Javascript」这门言语是由 Netscape开辟而来,当初开辟的时刻为了能让 「Javascript」这门言语能与 HTML 页面共存,而且不影响页面的其他内容,为此增加了一个一致的剧本支撑( script 剧本元素)。
script 元素
在 HTML 页面中运用「Javascript」言语重要的要领就是运用 script 元素,script 元素内部的代码从上而下顺次实行。
在引入多个 script 元素的时刻,浏览器会根据 script 元素在页面的中的先后递次举行剖析,当上一个剖析完成时,才会举行下一个 script 元素中的内容
在 HTML 中运用 Javascript 的两种要领
//第一种要领:直接在标签内运用 javascript 即可
<script>
console.log('第一种运用要领');
</script>
//第二种要领:援用外部文件
<script src="example.js"></script>
script 元素的属性
script 元素比较经常使用的几个属性
- src:可选,用于援用外部 javascript 文件
- type:可选,编写代码运用的剧本言语的范例(也成MIME范例),默认值为 text/javascript
- async:可选,异步加载剧本,只对外部剧本文件有用
- defer:可选,耽误剧本加载,在文档完整被剖析后在实行,只对外部剧本文件有用
script 元素在 HTML 中的位置
因为「Javascript」言语是一门单线程言语,在统一时间内,只能实行一个使命,所以只要当上一个使命完成以后才举行下一个使命,因此会致使 script 元素在 HTML 中的位置差别,会表现出差别效果。
一切 script 元素都放在 <head> 元素中
这类做法意味着,我们必需守候一切的 Javascript 代码必需实行完成以后才最先展现页面的内容,假如页面的 Javascript 代码异常多,这类要领就会致使我们看到页面的加载会异常慢,用户体验异常差,那末这么样去优化呢?实在很简单。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="example1.js"></script>
<script src="example2.js"></script>
</head>
<body>
<div>页面的内容地区</div>
</body>
</html>
一切 script 元素都放在页面内容的背面
优化上面所说的页面加载慢的题目,只需要把我们运用的 Javascript 代码放到页面的内容以后即可,如许页面会起首加载内容然后实际出来,再去实行 Javascript 代码,如许用户就不会守候良久页面才会显现内容。
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>页面的内容地区</div>
<script src="example1.js"></script>
<script src="example2.js"></script>
</body>
</html>
剧本的延时加载
剧本怎样举行延时加载,这个就要应用 script 元素的 defer 属性,在元素运用 defer 属性时,剧本会被耽误到全部页面剖析完成后在实行。
//example1.js 中的代码
//console.log('example1');
//console.log(document.getElementById('content'));
//example2.js 中的代码
//console.log('example2');
//console.log(document.getElementById('content'));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script defer src="example1.js"></script>
<script defer src="example2.js"></script>
</head>
<body>
<div id="content">这里页面的内容</div>
</body>
</html>
你会发在没有到场 defer 属性时控制台会打印出以下效果
example1
null
example2
null
当给元素加上 defer 属性时,效果会发生变化,能够发如今 div 元素的内容加载完成以后 Javascript 代码才会实行。
example1
<div id="content">这里页面的内容</div>
example2
<div id="content">这里页面的内容</div>
剧本的异步加载
剧本的异步加载,要用到 script 元素到 async 属性,它与 defer 属性相似,都是修正 script 元素的加载行动,不过 async 属性不会影响页面的其他加载,不会壅塞文档显现,而且带有 async 属性的剧本不能保证它们实行的前后递次,这一点与 defer 属性有着差别之处。
换句话说 example2.js 的代码可能会先于 example1.js 中的代码实行,所以在运用 async 属性时,要防止两个 js 相互依赖。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script async src="example1.js"></script>
<script async src="example2.js"></script>
</head>
<body>
<div id="content">这里页面的内容</div>
</body>
</html>
noscript 元素
初期的浏览器都邑又一个题目,那就是当浏览器不支撑 Javascript 言语时怎样显现页面内容,为此的解决方案就是创建了一个 noscript 元素,它能够在不支撑 Javascript 的浏览器中显现内容,而且只会在不支撑 Javascript 的浏览器中才会显现个中的内容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script async src="example1.js"></script>
<script async src="example2.js"></script>
</head>
<body>
<noscript>
当前浏览器不支撑 Javascript 请替换浏览器
</noscript>
</body>
</html>
关注微信民众号:六小登登。领取全套进修资本