【JS高级程序第四版阅读笔记】第二章 HTML中的JavaScript

  1. script元素中的属性
属性 作用
async 表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部脚本文件有效。
charset 使用src属性指定的代码字符集。
crossorigin 配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。crossorigin="anonymous"配置文件请求不必设置凭据标志。crossorigin="use-credentials"设置凭据标志,意味着出站请求会包含凭据。
defer 表示脚本可以延迟到文档完全被解析和显示之后再执行。
integrity 允许比对接收到的资源和指定的加密签名以验证子资源完整性。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。这个属性可以用于确保内容分发网络(CDN,Content Delivery Network)不会提供恶意内容。即为了防止 CDN 篡改 javascript 用的。
src 表示包含要执行的代码的外部文件。
  1. script会使页面阻塞,阻塞时间也包含下载文件时间。

  2. 为什么把script标签放在body元素中的页面内容后面,而不是在head中:

    把JS文件放在<head>里,也就意味着必须把所有js代码都下载、解析和解释完成后,才能渲染页面,会导致渲染页面明显延迟,在此期间浏览器窗口完全空白,为了解决这个问题,现在通常把<script>标签放在body的内容后面。这样一来,页面会在处理js代码前完成渲染页面,用户体验得到提升。

  3. defer的作用:

    defer表示脚本会延迟到整个页面解析完毕之后再运行。因此在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。第一个推迟的脚本会在第二个推迟的脚本之前执行,而且两者都会在DOMContentLoaded事件之前执行。不过在实际当中,推迟执行的脚本不一定总会按顺序执行或者在DOMContentLoaded事件之前执行,因此最好只包含一个这样的脚本。

  4. async的作用:

    async会告诉浏览器立即下载js脚本,与defer不同的是,标记为async的脚本并不保证能按照他们出现的次序执行。给脚本添加async属性的目的是告诉浏览器,不必等脚本下载和执行完后再加载页面,同样也不必等到该异步脚本下载和执行后再加载其他脚本。正因为如此,异步脚本不应该在加载期间修改DOM。另外,不是所有浏览器都支持async属性。

  5. 文档模式:

    1. 混杂模式:让IE像IE5一样支持一些非标准的特性;
    2. 标准模式:让IE具有兼容标准的行为;
    3. 准标准模式: 让浏览器支持很多标准的特性,但是没有标准规定的那么严格,

    混杂模式和标准模式主要区别只体现在通过CSS渲染的内容方面,但对JS也有一些关联印象,或者称为副作用。而准标准模式主要区别在于如何对待图片元素周围的空白(在表格中使用图片时最明显)。

    主要以混杂模式 和 标准模式(即混杂模式以外的模式)为主。

  6. noscript元素

    当浏览器不支持脚本 或 浏览器对脚本的支持被关闭时,包含在<body>中的<noscript>中的内容就会被渲染。

<!DOCTYPE html>
<html>
  <head>
  <title>Example HTML Page</title>
  <script defer="defer" src="example1.js"></script>
  <script defer="defer" src="example2.js"></script>
  </head>
  <body>
  <noscript>
    <p>This page requires a JavaScript-enabled browser.</p>
  </noscript>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_34086980/article/details/108988074