分类
精读JS高级程序设计

第二章在HTML中使用JS

<Script>元素

HTML4.01为<Script>定义了6个属性

  • async:可选,表示立即下载脚本,但不应该妨碍页面的其他操作,比如下载其他资源或等待加载其他脚本(浏览器将立即下载文件,下载好后立即执行,所以async的脚本不保证按照制定它们的先后顺序执行,async脚本一定是在页面的load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行)。只对外部文件有效。建议async脚本不要在加载期间修改DOM,并确保两个异步脚本互不依赖。
  • defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行(浏览器将立即下载文件,但脚本会被延迟到整个页面都解析完毕后再运行,并保证脚本按照它们出现的先后顺序执行,defer脚本一定在DOMContentLoaded事件之前执行)。只对外部脚本有效。
  • charset:可选,表示通过src属性指定的代码的字符集,由于大多数浏览器会忽略他的值,因此这个属性很少人用。
  • src:可选,表示包含要执行代码的外部文件。
  • type:可选,表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。
  • language:已废弃。

脚本阻塞

包含在<Script>元素内部的JS代码将被从上至下依次解释,在解释器对<Script>元素内部代码求值完毕之前,页面中的其余内容都不会被浏览器加载和显示。与解析嵌入式代码一样,在解析外部JS文件(包括下载该文件)时,页面的处理也会展示停止。

跨域

<Script>与<img>的src属性可以指向当前HTML页面所在域之外的某个域中的完整URL。(jsonp实现的基本)

标签的位置

按照传统的做法,所有<Script>元素应该放在页面的<head>元素中,这种做法意味着必须等到全部JS代码都被下载、解析、执行后,才能开始呈现页面的内容,对于那些需要很多JS代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟,延迟期间的浏览器窗口将是一片空白。为了避免这个问题,现代web应用程序一般把JS引用放在<body>元素中页面内容的后面。

发表评论

电子邮件地址不会被公开。 必填项已用*标注