js红宝书笔记(1)

js红宝书笔记(1)

<script src="example.js"/> 这样的语句,在xhtml中合法,但是在html中不能使用(必须加</script>)。

使用了src属性的script元素,不能再在标签中包含其他js代码,会被浏览器忽略。

script元素可以接受外部域的js文件。浏览器在解析这个资源时会向src属性的路径发一个get请求,取得响应资源,这个请求不受浏览器的同源策略限制。但是返回并被执行的js受同源限制。

script元素一般放在body的最下方,避免阻塞页面渲染。

defer属性:立即下载,但是延迟执行。(整个页面解析完成之后再运行)。html规范规定按照defer脚本出现的顺序进行执行。

async:立即下载,但不保证按照async脚本的排列顺序执行。不能有依赖关系。不必等脚本下载和执行完后再加载页面,也不必等异步脚本下载和执行完后再加载其他脚本。所以async脚本中不能有dom操作。好的 Web 开发实践根本就不推荐使用这个方法。

动态加载脚本:创建一个script元素并添加到dom中。以这种方式创建的script元素是以异步方式加载的,相当于添加了async属性。

含有<,>的内联脚本的处理办法 : 1. 使用&lt; &gt;代替<,>, 2. 使用<![CDATA[ xxx ]]> 包含这段代码,且CDATA相关标识符要放在注释里。(非XHTML兼容的浏览器不支持CDATA相关标识符)

外部js文件优于行内代码的原因:

  1. 可维护性。JavaScript 代码如果分散到很多 HTML 页面,会导致维护困难。而用一个目录保存所有 JavaScript 文件,则更容易维护,这样开发者就可以独立于使用它们的 HTML 页面来编辑代码。
  2. 缓存。浏览器会根据特定的设置缓存所有外部链接的 JavaScript 文件,这意味着如果两个页面都用到同一个文件,则该文件只需下载一次。这最终意味着页面加载更快。
  3. 适应未来。通过把 JavaScript 放到外部文件中,就不必考虑用 XHTML 或前面提到的注释黑科技。包含外部 JavaScript 文件的语法在 HTML 和 XHTML 中是一样的。

<noscript>元素可以包含任何可以出现在<body>中的 HTML 元素,<script>除外。在下列两种情况下,浏览器将显示包含在<noscript>中的内容:1. 浏览器不支持脚本;2. 浏览器对脚本的支持被关闭。

发表回复

*您的电子邮件地址不会被公开。必填项已标记为 。

*
*