关于script标签,我们应该知道的

一、静态标签

1、<script>标签按照它们出现的顺序被执行,不管是script代码块还是script外链,都遵循先出现先执行的原则。这意味着如果你的网站有很慢的脚本在页面较前部分被加载,你的网页加载就会被显著拖慢。这也意味着后加载的脚本可以依赖先加载的脚本;
2、页面元素在它之前的所有脚本都加载完毕之前是不会执行渲染的,由此大段script代码可以引起页面加载卡顿;
3、当一个 <script>标签被执行,在它之前的 HTML 元素可以访问(哪怕只出现了半个标签,例如body),但是在它之后的还不能用;

二、动态标签

1、通过DOM规范添加到页面上的script标签会被正确插入并执行。通过innerHTML向页面添加script标签时,会正确植入一个新的script标签,但是不会被执行。通过innerText插入script标签时,只会在元素中插入对应的字符串,并不会真正 的植入一个新的标签;
2、通过DOM动态添加到页面上的script标签无法保证执行的先后顺序,浏览器根据请求完成的先后顺序会执行;

三、标签属性

1、async表示异步执行脚本,无法确保脚本在何时会被执行。defer表示推迟脚本执行,在整个页面加载完成之后会按序执行所有的defer脚本,此时可以访问页面中的所有元素;
2、自netscape2诞生以后,type=text/javascript就不是必填项。如果为script标签设置了一个非javascript的MIME类型,浏览器就不会执行他。通过以下meta标签来修改页面中script标签的默认type值:

<meta http-equiv="Content-Script-Type" content="text/vbscript">

3、integerity属性可以为script标签提供一个hash值,用以进行资源完整性的安全检查功能:

<script src="//code.jquery.com/jquery.js"
integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC">
</script>

四、特殊API

1、新规范中,document.currentScript返回当前正被执行的script标签元素;
2、HTML5规范中新增了一种曾经IE用来为script标签绑定事件的语法:for/event。但是实际情况下,其他浏览器并未支持该功能:

<script for="window" event="onload">
  alert("Hi!")
</script>

3、 <noscript> 标签里的内容只有浏览器不支持脚本的时候才会被渲染出来,noscript 不接受 type 参数:

<noscript>
  Please use Internet Explorer 5.5 or above.
</noscript>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响尾大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值