2.1 <script>
元素
HTML5中为
<script>
元素定义了下列6个属性- async:可选;示意应该立刻下载脚本,但不应障碍页面中的其余操作,比方下载其余资源或期待加载其余脚本;只对外部脚本无效;
- charset:可选;示意通过src属性置顶的代码的字符集;大多数浏览器会疏忽这个值;
- defer:示意脚本能够提早到文档齐全被解析和显示之后再执行;只对外部脚本无效;扭转script元素加载程序
- language:已废除;
- src
- type:必选;示意编写代码应用的脚本语言的内容类型(也称为MIME类型)
- 蕴含在
<script>
元素外部的JavaScript代码将被从上到下顺次解释 - 不要在代码中的任何地位出
</script>
字符串,即便是alert('</script>')
,但能够应用转义字符“\”解决,eg:alert('<\/script>')
- 在解析内部JavaScript文件(包含下载该文件)时,与解析嵌入式JavaScript代码一样,页面的解决也会临时进行
- 内部JavaScript文件带有.js扩展名,然而这个扩展名不是必须的,因为浏览器不会查看蕴含JavaScript的文件的扩展名,然而服务器通常还是须要看扩展名决定为响应利用哪种MIME类型
- 带有src属性的
<script>
元素两头不应该再呈现其余代码,即便有,也只会加载内部src中的脚本文件,<script>
元素两头的代码会被疏忽
2.1.1 标签的地位
依照传统的做法,所有的<script>
元素都应该放在页面的<head>
元素中,然而为什么当初不这样做?
首先说,这种做法的目标就是把所有的内部文件的援用都放在雷同的中央;
然而,在文档的<head>
元素中蕴含所有JavaScript文件,意味着必须等到所有的JavaScript文件都下载、解析、执行结束之后,才开始出现页面内容,这会使得浏览器在出现页面时呈现显著的提早,在这期间页面一片空白,因而当初的通用做法是,将JavaScript援用放在<body>
元素中页面内容的前面
2.1.2 提早脚本--defer属性
- 这个属性的用处:表明脚本在执行时不会影响页面的结构,即脚本会被提早到整个页面都解析结束后再运行(立刻下载,但提早执行)
- HTML5标准要求脚本依照他们呈现的先后顺序执行,因而几个提早脚本同时呈现的时候,会依照程序提早执行,且这些提早脚本会先于DOMContentLoaded事件
- 在事实中,提早脚本不肯定会依照程序执行,也不肯定会在DOMContentLoaded事件触发前执行,因而最好只蕴含一个提早脚本
- 局部浏览器会疏忽defer属性,因而,把提早脚本放在页面底部依然是最佳抉择
2.1.3 异步脚本--async属性
- 与defer属性不同之处:async的脚本并不保障依照指定他们的先后顺序执行,因而确保脚本之间互不依赖十分重要
- 倡议异步脚本不要在加载期间批改DOM
- 异步脚本肯定会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发前或者后执行
2.1.4 在XHTML中的用法----略
2.1.5 不举荐应用的用法--不反对JavaScript的浏览器曾经不存在--略
2.2 嵌入代码与内部文件
在HTML中嵌入JavaScript代码没有问题,然而个别认为最好的做法还是尽可能应用内部文件来蕴含JavaScript代码,长处:
- 可维护性:遍布不必HTML页面的JavaScript会造成保护问题
- 可缓存:浏览器可能依据具体的设置缓存链接的所有内部JavaScript文件
- 适应将来:XHTML和HTML蕴含内部文件的语法是雷同的
2.3 文档模式
IE5.5引入文档模式的概念,这个概念是通过应用文档类型切换实现的,最后的文档模式分为两种:
- 混淆模式:会让IE的行为与蕴含非标准个性的IE5雷同
- 规范模式:让IE行为更靠近规范行为
尽管这两种模式次要影响CSS内容的出现,但在某些状况下也会影响到JavaScript的解释执行
- 在此之后,IE又提出一种准规范模式:浏览器个性很多都是符合标准的,这种模式能够通过应用过渡型或者框架集型文档类型来触发
- 如果在文档开始处没有发现文档类型阐明,则所有浏览器都会默认开启混淆模式
- 准规范模式和规范模式十分靠近,个别提到规范模式,指的是除混淆模式以外的其余模式
2.4 <noscript>
元素
- 晚期浏览器面临一个问题:即当浏览器不反对JavaScript时如何让页面安稳进化。----
<noscript>
元素 蕴含
<noscript>
元素中的内容只有在下列状况才会显示进去:- 浏览器不反对脚本
- 浏览器反对脚本,然而脚本被禁用
除此之外,浏览器不会出现
<noscript>
元素中的内容
本文由mdnice多平台公布