先思考一下,问自己几个问题
- script标签中 integrity属性的作用
- crossorigin 属性如何携带凭据?
- defer属性的作用,defer属性加载的脚本执行顺序如何?
- async属性的作用,async属性加载的脚本执行顺序如何?
- JS动态加载脚本前,如何让浏览器预加载?
将javaScript插入HTML中主要的方式是使用
- async: 可选。表示立即开始下载脚本,但不能阻止页面其它的动作,比如下载资源或等待其它脚本加载。只对外部脚本文件有效。在外部js文件加载完成之后,如果浏览器空闲,并且load事件触发,会在load事件触发之前执行。是异步加载,会同时并行加载多个js文件,当前文件下载完后会立即执行,不会按照书写的先后顺序
- defer: 可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。是延迟执行,会同时并行加载多个js文件,但会按照书写顺序,从上到下,依次执行。会在js加载完成之后,等到整个文档解析完成后才执行,和async执行时间不一样。
- integrity:可选。允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI Subresource Integrity)。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。这个属性可以用于确保内容分发网络(CDN)不会提供恶意内容。
- crossorigin:可选。配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。crossorigin=“anonymous”(匿名的)配置文件请求不必设置凭据标志。crossorigin=“use-credentials”(凭证)设置凭据标志,意味着出站请求会包含凭据。
- script标签 crossorigin 属性的主要作用:
- 设置 crossorigin属性后,script标签去请求资源的时候,request会带上origin头,然后会要求服务器进行 cors校验,跨域的时候如果response header 没有 ‘Access-Control-Allow-Origin’ 是不会拿到资源的。cors验证通过后,拿到的script脚本运行内部报错的话,window.onerror 捕获的时候,内部的error.message可以看到完整的错误信息。
- crossorigin的属性值分为anonymous和use-credentials。如果设置了crossorigin属性,但是属性值不正确的话,默认是anonymous。
- anonymous代表同域会带上cookie,跨域则
- script标签 crossorigin 属性的主要作用: