JavaScript高级程序设计笔记之二:在HTML中使用JavaScript

330 阅读4分钟

第二章:在HTML中使用JavaScript

思维导图

一、使用<script>元素

属性:

  • async

    • 应该立即下载脚本,但不妨碍页面中其他操作。(如下载其他资源或等待加载其他脚本)
    • 只对外部脚本文件有效。
  • charset

    • 通过src属性指定的代码的字符集。(用的少)
  • defer

    • 脚本可以延迟到文档完全被解析和显示之后再执行。
    • 只对外部脚本文件有效。
  • language

    • (已废弃)原用于表示编写代码使用的脚本语言(JavaScript,JavaScript1.2,VBScript等)
  • src

    • 包含要执行代码的外部文件
  • type

    • 可以看成language的替代属性
    • 表示编写代码使用的脚本语言的内容类型(MIME类型)
    • 然text/javascript和text/ecmascript都已经不被推荐使用,但人们一直以来使用的都还是text/javascript

使用方式:

  • 直接在页面中嵌入JavaScript代码

    • 包含在<script>元素内部的JavaScript代码将被从上至下依次解释。
  • 包含外部JavaScript文件

  • 只要不存在defer和async属性,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析。

标签的位置

  • 1、都放在<head>元素中,目的就是把所有外部文件(包括CSS文件和JavaScript文件)的引用都放在相同的地
  • 2、为解决浏览器呈现页面出现延迟留白问题,一般把JavaScript放在</body>元素前

延迟脚本

  • <script>中定义defer属性
  • 用途:表明脚本在执行时不会影响页面的构造【即:脚本会被延迟到整个页面都解析完毕后再运行】
  • 告知浏览器:立即下载,延迟执行

异步脚本

  • <script>中定义async属性
  • 只适用于外部脚本文件,告诉浏览器立即下载文件
  • 标记async的脚本并不保证按照指定它们的先后顺序执行
  • 建议异步脚本不要在加载期间修改DOM

在XHTML中使用<script>

二、嵌入脚本与外部脚本

使用外部文件优点:

  • 可维护性

    • 遍及不同HTML页面的JavaScript会造成维护问题。
    • 把所有JavaScript文件都放在一个文件夹中,维护起来就轻松多了
  • 可缓存

    • 浏览器能够根据具体的设置缓存链接的所有外部JavaScript文件。
    • 如果有两个页面都使用同一个文件,那么这个文件只需下载一次
    • 最终结果就是能够加快页面加载的速度。
  • 适应未来

    • 通过外部文件来包含JavaScript无须使用前面提到XHTML或注释hack。
    • HTML和XHTML包含外部文件的语法是相同的。

三、文档模式对JavaScript的影响

文档模式

  • 混杂模式(quirks mode)
  • 标准模式(standards mode)

四、考虑禁用JavaScript的场景

<noscript>元素

  • 问题:当浏览器不支持JavaScript时如何让页面平稳地退化

  • 包含在<noscript>元素中的内容显示情况:

    • 浏览器不支持脚本
    • 浏览器支持脚本,但脚本被禁用

五、小结:

把JavaScript插入到HTML页面中要使用<script>元素。

使用这个元素可以把JavaScript嵌入到HTML页面中,让脚本与标记混合在一起;

也可以包含外部的JavaScript文件。

注意点:

  • 1、在包含外部JavaScript文件时,必须将src属性设置为指向相应文件的URL。
    【而这个文件既可以是与包含它的页面位于同一个服务器上的文件,也可以是其他任何域中的文件。】
  • 2、所有<script>元素都会按照它们在页面中出现的先后顺序依次被解析。(不使用defer和async下,只有解析完前面<script>元素中的代码后,才会开始解析后面<script>元素中的代码)
  • 3、浏览器会先解析完不使用defer属性的<script>中的代码,然后再解析后面的内容【一般把script放到页面最后,</body>前】
  • 4、使用defer属性,可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定它们的顺序执行。
  • 5、使用async属性,可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。 【不能保证异步脚本按照它们在页面中出现的顺序执行】

使用<noscript>元素可以指定在不支持脚本的浏览器中显示的替代内容。