码迷,mamicode.com
首页 > 其他好文 > 详细

<script>元素

时间:2019-12-05 01:02:03      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:标签   适用于   执行顺序   UNC   tle   速度   执行   lan   事件   

使用script标签

  • script标签的六个属性:src/type/async/defer/charset/language已弃用
  • 使用的两种方式:在页面中嵌入JavaScript代码/引入外部的JS文件

    向页面中嵌入JavaScript代码

  • 只需要指定type属性,包含在script中的代码将从上至下执行
  • 使用< script >嵌入代码时遇到字符串< /script >就结束,所以在代码中使用字符串< script >时需要转义
<script>
    function fun(){
        console.log('<\/script>')
    }
</script>

引入外部的JS文件

  • 需要指定src属性,不能在HTML文档中使用这种语法,不符合HTML规范
  • 文件扩展名.js不是必须的,因为浏览器不会检查JavaScript文件的扩展名,但是这样使用服务器语言如JSP等生成JS代码也可以,但是服务器还是需要看扩展名决定为响应应用哪种mine类型,所以不加扩展名时请确保服务器能返回正确的mime类型
  • 设置src的script标签中间不可以嵌入JavaScript代码,即使嵌入也不会执行
  • src也可以指向外部域的JS文件,但是这有一定的安全隐患;如果想要引用外部域的代码请确保该域可信赖。

标签的位置

  • javascript语言是单线程机制。所谓单线程就是按次序执行,执行完一个任务再执行下一个。对于浏览器来说无法在渲染页面的同时执行JS代码。当浏览器遇到< script >标签的时候,浏览器必须花话时间下载外链的文件然后并执行,在这过程中,页面渲染和用户交互是完全被阻塞的。所以脚本会阻塞页面的渲染,直到它们全部下载并执行完成后,页面渲染才会继续。
  • 按照习惯,所有< script >元素都放在页面的< head >中(将所有的外部文件css和JS的引用都放在一起),但是这样如果页面中的js过多时浏览器呈现页面会出现延迟,这期间会使白屏时间。为避免该问题,我们一般将JavaScript引用放到< body >元素中页面内容的后面,以保证在执行JS代码时页面已经完全呈现,用户会感觉打开页面的速度变快。
<!DOCTYPE html>
<html>
<head>
<title></title>
<body>
----HTML----
<script src='01.js'></script>
<script src='02.js'></script>
</body>
</head>
</html>

延迟加载defer

  • < script >标签中设置defer属性表示脚本会被立即下载,但是延迟到整个页面都解析完成后执行
  • defer属性只能用于外部脚本文件(H5规范,IE4-7内部脚本也可以设置,IE8之后不可以)
  • H5规定多个设置了defer属性的脚本按照顺序执行,并且先于DOMContentLoaded事件,但是实际上并不一定,所以最好只包含一个延迟脚本

异步脚本async

  • < script >标签中设置async属性表示立即下载脚本,但是页面不等待脚本的下载和执行,从而异步加载页面中的其他内容而不进行阻塞。因此最好不要异步脚本中修改DOM。
  • async属性值适用于外部脚本文件
  • 多个设置了async属性的脚本文件执行顺序不确定。
  • 异步脚本一定会在load事件前执行,但是与DOMContentLoaded事件的顺序不确定

<script>元素

标签:标签   适用于   执行顺序   UNC   tle   速度   执行   lan   事件   

原文地址:https://www.cnblogs.com/qqinhappyhappy/p/11986558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!