关于程序员:帮你读JavaScript高级程序设计第3版第2章在HTML使用JavaScript

32次阅读

共计 1925 个字符,预计需要花费 5 分钟才能阅读完成。

2.1 <script>元素

  1. HTML5 中为 <script> 元素定义了下列 6 个属性

    • async:可选;示意应该立刻下载脚本,但不应障碍页面中的其余操作,比方下载其余资源或期待加载其余脚本;只对外部脚本无效;
    • charset:可选;示意通过 src 属性置顶的代码的字符集;大多数浏览器会疏忽这个值;
    • defer:示意脚本能够提早到文档齐全被解析和显示之后再执行;只对外部脚本无效;扭转 script 元素加载程序
    • language:已废除;
    • src
    • type:必选;示意编写代码应用的脚本语言的内容类型(也称为 MIME 类型)
  2. 蕴含在 <script> 元素外部的 JavaScript 代码将被从上到下顺次解释
  3. 不要在代码中的任何地位出 </script> 字符串,即便是alert('</script>'),但能够应用转义字符“\”解决,eg:alert('<\/script>')
  4. 在解析内部 JavaScript 文件(包含下载该文件)时,与解析嵌入式 JavaScript 代码一样,页面的解决也会临时进行
  5. 内部 JavaScript 文件带有.js 扩展名,然而这个扩展名不是必须的,因为浏览器不会查看蕴含 JavaScript 的文件的扩展名,然而服务器通常还是须要看扩展名决定为响应利用哪种 MIME 类型
  6. 带有 src 属性的 <script> 元素两头不应该再呈现其余代码,即便有,也只会加载内部 src 中的脚本文件,<script>元素两头的代码会被疏忽

2.1.1 标签的地位

依照传统的做法,所有的 <script> 元素都应该放在页面的 <head> 元素中,然而为什么当初不这样做?

首先说,这种做法的目标就是把所有的内部文件的援用都放在雷同的中央;

然而,在文档的 <head> 元素中蕴含所有 JavaScript 文件,意味着必须等到所有的 JavaScript 文件都下载、解析、执行结束之后,才开始出现页面内容,这会使得浏览器在出现页面时呈现显著的提早,在这期间页面一片空白,因而当初的通用做法是,将 JavaScript 援用放在 <body> 元素中页面内容的前面

2.1.2 提早脚本 –defer 属性

  1. 这个属性的用处:表明脚本在执行时不会影响页面的结构,即脚本会被提早到整个页面都解析结束后再运行(立刻下载,但提早执行)
  2. HTML5 标准要求脚本依照他们呈现的先后顺序执行,因而几个提早脚本同时呈现的时候,会依照程序提早执行,且这些提早脚本会先于 DOMContentLoaded 事件
  3. 在事实中,提早脚本不肯定会依照程序执行,也不肯定会在 DOMContentLoaded 事件触发前执行,因而最好只蕴含一个提早脚本
  4. 局部浏览器会疏忽 defer 属性,因而,把提早脚本放在页面底部依然是最佳抉择

2.1.3 异步脚本 –async 属性

  1. 与 defer 属性不同之处:async 的脚本并不保障依照指定他们的先后顺序执行,因而确保脚本之间互不依赖十分重要
  2. 倡议异步脚本不要在加载期间批改 DOM
  3. 异步脚本肯定会在页面的 load 事件前执行,但可能会在 DOMContentLoaded 事件触发前或者后执行

2.1.4 在 XHTML 中的用法 —- 略

2.1.5 不举荐应用的用法 – 不反对 JavaScript 的浏览器曾经不存在 – 略

2.2 嵌入代码与内部文件

在 HTML 中嵌入 JavaScript 代码没有问题,然而个别认为最好的做法还是尽可能应用内部文件来蕴含 JavaScript 代码,长处:

  • 可维护性:遍布不必 HTML 页面的 JavaScript 会造成保护问题
  • 可缓存:浏览器可能依据具体的设置缓存链接的所有内部 JavaScript 文件
  • 适应将来:XHTML 和 HTML 蕴含内部文件的语法是雷同的

2.3 文档模式

  1. IE5.5 引入文档模式的概念,这个概念是通过应用文档类型切换实现的,最后的文档模式分为两种:

    • 混淆模式:会让 IE 的行为与蕴含非标准个性的 IE5 雷同
    • 规范模式:让 IE 行为更靠近规范行为

    尽管这两种模式次要影响 CSS 内容的出现,但在某些状况下也会影响到 JavaScript 的解释执行

  2. 在此之后,IE 又提出一种 准规范模式:浏览器个性很多都是符合标准的,这种模式能够通过应用过渡型或者框架集型文档类型来触发
  3. 如果在文档开始处没有发现文档类型阐明,则所有浏览器都会默认开启混淆模式
  4. 准规范模式和规范模式十分靠近,个别提到规范模式,指的是除混淆模式以外的其余模式

2.4 <noscript>元素

  1. 晚期浏览器面临一个问题:即当浏览器不反对 JavaScript 时如何让页面安稳进化。—-<noscript>元素
  2. 蕴含 <noscript> 元素中的内容只有在下列状况才会显示进去:

    • 浏览器不反对脚本
    • 浏览器反对脚本,然而脚本被禁用

    除此之外,浏览器不会出现 <noscript> 元素中的内容

本文由 mdnice 多平台公布

正文完
 0