在防范XSS的时候,会有一些特例
比如正常情况下,以下代码是没法执行的,因为没有闭合script标签:
<script src="test.js">
但是,在IE下,以下代码可以成功执行:
<script async src="test.js">
请问,这里的async起到什么作用,能让浏览器不会因为没有闭合script标签而报错。
另外,在chrome或火狐下如何能实现不闭合script标签也能成功执行js?
async
设置为true
的时候,代表在加载js
文件的同时,html
文件是同时在被解析的,当js
文件被加载完之后,就开始执行加载好的js
文件,这个时候html
文件的解析被挂起,只有当这个js
文件被执行完之后才继续进行html
文件的渲染。
1.首先不推荐不闭合的script标签,在javascript高级程序
一书中说道:
这种语法不符合HTML规范,而且也得不到某些浏览器(尤其是IE)的正确解析。
2.关于async是个可选的参数,默认true,表示应当立即下载脚本,不会影响其他脚本和HTML的加载。
如果是async='false',则表示等到该脚本下载完毕后再执行其他操作,理解为同步。