自己尝试了一样不同浏览器有不同的结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Script</title>
<script type="text/javascript">
document.write("Hello Imooc!");
document.write("我是写在Script标签中的文字!")
</script>
<script type="text/javascript" src="asii.js"></script>
<!-- async:规定一旦脚本可用,则会异步执行. -->
<script async="async" src="as22.js "></script>
<!-- derfer规定当前页面已加载完成,才会执行脚本 -->
<script defer="defer" src="der33.js"></script>
</head>
<body>
<p>这里是写在body中的文字!</p>
</body>
</html>Google 第一出现文字(documen.write的,引入文件的,body的全出来)(像这样你好Imooc!我是写在脚本标签中的文字! 这里是写在脚本文件中的文字
这里是写在body中的文字!
)第二弹出defer
第三弹出async
firefox 第一出现async,紧接着出现文字,这两个分不清哪个先出现,但是firefox弹框有遮罩效果我感觉遮罩先出来的,最后出面的是defer
Microsoft Explorer 就是老师出现的练习效果,先出来defer弹框,点击后出现文字,最后出现async弹框
为什么会出面这种情况 不理解
我想说一下我理解的这两者的区别,看哪里理解的不对还请老师指点
用script标签引入文件(async和defer这两个文件)如果在body的情况下)
async和defer都是异步加载js文件(因为浏览器的内核是多线程的,async是异步加载,浏览器又开启一个子线程来加载文件但不影响后续文档元素渲染,但如果js文件加载完成之后就会立即执行,
defer也是(异步加载),后续文档元素渲染的加载和js文件同时进行,在所有元素渲染完成之后在执行文件.
这里怎么个同时进行是也开启一个线程吗?还是?)
正在回答
同学你好, 同学对两者的理解是对的,defer也是开始另一个线程,同时加载js的html、css文件,与async不同的是它是加载完后不会执行,会等到整个页面加载完之后再执行。
由于不同的浏览器解析机制存在差异造成的, 这是浏览器的兼容性问题,不用太纠结。这个在实际开发中不用,跟着课程简单的了解一下就行。
如果我的回答,帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星