js学习笔记:script元素

script元素

  • 在解释器对 < script > 元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。
  • 在解析外部js文件(包括下载该文件)时,页面的处理也会暂时停止。
  • 带有src属性的< script >元素内部不应该再包含额外的代码了。如果包含嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
  • 只要不存在async和defer属性,浏览器都会按照< script >元素在页面中出现的先后顺序对它们依次进行解析。第一个被解析完后解析第二个……
标签的位置

因为浏览器遇到body标签才开始呈现内容,因此如果把script标签放到head中,就意味着必须等到全部js代码都被下载、解析和执行完毕后才开始呈现页面内容。因此一般把script标签放到body中页面内容的后面。

延迟脚本(defer)与异步脚本(async)

这里写图片描述

1.这两个属性都只适用于外部脚本。
2.都是立即下载,且下载期间不阻塞html解析,但defer是延迟执行,async是解析完马上执行。
3.都不保证执行的先后顺序

  • defer属性表明脚本在执行时不会影响页面的构造,即脚本会被延迟到整个页面都解析完毕后再运行。因此,defer属性表明立即下载,但延迟执行
<head>
    <script defer="defer" src="a.js"></script>
    <script defer="defer" src="b.js"></script>
</head>

虽然把script放到head中,但其中包含的脚本将延迟到浏览器遇到< /html>后再执行
但延迟脚本并不会一定按照顺序执行,因此最好只包含一个延迟脚本。

  • async脚本的目的是不让页面等待脚本下载和执行,从而异步加载页面其它内容,因此异步脚本最好不要在加载期间修改DOM。 异步脚本一定会在页面的load事件前执行。
<head>
    <script async src="a.js"></script>
    <script async src="b.js"></script>
</head>
< noscript>元素
  • 浏览器不支持脚本
  • 脚本被禁用

这两种情况下浏览器就会显示< noscript>中的内容,让不支持js的页面平稳退化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值