一直想不明白script的defer这个属性,看了视频和文档都说只有IE浏览器兼容这个defer属性,其他浏览器都不兼容。我在head里面引入两个js文件,如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script defer="defer" type="text/javascript" src="js/defer.js"></script>
<script async="async" type="text/javascript" src="js/async.js"></script>
</head>
<body>
<p>script只有IE浏览器支持defer属性,而async主流浏览器都支持</p>
<p>我是html里的文字</p>
</body>
</html>
defer.js就是alert("defer");
async.js就是alert("async");
经测试,在360浏览器和谷歌浏览器,都是先弹出了defer,再弹出async;但是在IE浏览器是先弹出了async,再弹出defer,我想这应该就是验证了defer只兼容IE的说法。于是问题来了,为什么有时候在head里面引用了某些js文件,会报错(因为是先执行了js,没有加载到html文件),但是这时候在script标签加了defer=“defer”就没报错了(非IE浏览器下),不是说defer只兼容IE吗?真的想不明白啊
究竟defer这个属性是只兼容IE吗?但是我有看到有些文章说目前IE已经兼容了其他主流浏览器,那又怎么解释我上面的alert测试例子呢?
相关分类