国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 淺談js文件引用方式及其同步執行與異步執行

淺談js文件引用方式及其同步執行與異步執行

2020-06-20 12:36java教程網 JAVA教程

下面小編就為大家帶來一篇淺談js文件引用方式及其同步執行與異步執行。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

任何以appendChild(scriptNode) 的方式引入的js文件都是異步執行的 (scriptNode 需要插入document中,只創建節點和設置 src 是不會加載 js 文件的,這跟 img 的與加載不同 )

html文件中的<script>標簽中的代碼或src引用的js文件中的代碼是同步加載和執行的

html文件中的<script>標簽中的代碼使用document.write()方式引入的js文件是異步執行的

html文件中的<script>標簽src屬性所引用的js文件的代碼內再使用document.write()方式引入的js文件是同步執行的

1、

?
1
2
3
<script>
//同步加載執行的代碼
</script>

2、

?
1
<script src="xx.js"></script> //同步加載執行xx.js中的代碼

3、

?
1
2
3
<script>
document.write('<script src="xx.js"><\/script>');  //異步加載執行xx.js中的代碼
</script>

4、

?
1
<script src="xx.js"></script>

xx.js中有下面代碼:

?
1
2
document.write('<script src="11.js"><\/script>'); 
document.write('<script src="22.js"><\/script>'); 

則xx.js和11.js、22.js 都是同步加載和執行的。

如果 xx.js 以插入方式異步加載,則 11.js 和 22.js 仍然是同步加載的(異步中的同步,即,這2個文件的加載是分先后次序的)

測試:在11中 alert, 22中 document.write() ,可以看到 22中寫入語句被阻塞

5、

下面這種方式,xx.js會在appendChild執行之后異步加載執行

?
1
2
3
var script = document.createElement("script");
script.setAttribute("src","xx.js");
documenrt.getElementsByTagName("head")[0].appendChild(script);

一個加載 js 文件的 函數:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var loadJS = function(url,callback){
var head = document.getElementsByTagName('head')[0], 
script = document.createElement('script'); 
script.src = url; 
script.type = "text/javascript"
head.appendChild( script);
  script.onload = script.onreadystatechange = function(){
//script 標簽,IE 下有 onreadystatechange 事件, w3c 標準有 onload 事件  
//這些 readyState 是針對IE8及以下的,W3C 標準因為script 標簽沒有這個 onreadystatechange 所以也不會有 this.readyState ,
// 好在文件加載不成功 onload 不會執行,(!this.readyState) 是針對 W3C標準的
if ((!this.readyState) || this.readyState == "complete" || this.readyState == "loaded" ){
 callback();  
 }
 else
 {    
 alert("can not load the js file")  
 
 }
 }

對于第4點的測試(其中插入 alert 很容易看到加載時阻塞的)

tryjs.html

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<script src="tryjs.js"
onload="if(!document.all){console.log('outer js callback, not IE');}"
onreadystatechange="console.log('outer js callback ',this.readyState,' IE');"></script>
 
 
<body>
 
</body>
</html>

tryjs.js

?
1
2
3
4
console.log('write begin');
document.write('<script src="try.1.js" onreadystatechange="console.log(\'file 1 callback \',this.readyState,\' IE\');" onload="if(!document.all){console.log(\'file 1 callback,NOT IE \');}"><\/script>');
document.write('<script src="try.2.js" onreadystatechange="console.log(\'file 2 callback \',this.readyState,\' IE\');" onload="if(!document.all){console.log(\'file 2 callback,NOT IE \');}"><\/script>');
console.log('write finished');

try.1.js

?
1
2
console.log('loadjs 1 begin');
console.log('loadjs 1 finished');

try.2.js

?
1
2
console.log('loadjs 2 begin');
console.log('loadjs 2 finished');

測試結果(file 2 和 file 1 的 callback complete 在IE7\8\9次序不確定)

IE 7:

日志: outer js callback loading IE
日志: outer js callback loaded IE
日志: write begin
日志: write finished
日志: outer js callback complete IE
日志: file 1 callback loading IE
日志: file 2 callback loading IE
日志: loadjs 1 begin
日志: loadjs 1 finished
日志: loadjs 2 begin
日志: loadjs 2 finished
日志: file 2 callback complete IE
日志: file 1 callback complete IE

IE8:

日志: outer js callback loading IE
日志: outer js callback loaded IE
日志: write begin
日志: write finished
日志: outer js callback complete IE
日志: file 1 callback loading IE
日志: file 2 callback loading IE
日志: loadjs 1 begin
日志: loadjs 1 finished
日志: loadjs 2 begin
日志: loadjs 2 finished
日志: file 2 callback complete IE
日志: file 1 callback complete IE

IE9:

日志: write begin
日志: write finished
日志: outer js callback complete IE
日志: file 1 callback loading IE
日志: file 2 callback loading IE
日志: loadjs 1 begin
日志: loadjs 1 finished
日志: loadjs 2 begin
日志: loadjs 2 finished
日志: file 1 callback complete IE
日志: file 2 callback complete IE

FIREFOX:

write begin
write finished
outer js callback, not IE
loadjs 1 begin
loadjs 1 finished
file 1 callback,NOT IE
loadjs 2 begin
loadjs 2 finished
file 2 callback,NOT IE

CHROME:

write begin
write finished
outer js callback, not IE
loadjs 1 begin
loadjs 1 finished
file 1 callback,NOT IE
loadjs 2 begin
loadjs 2 finished
file 2 callback,NOT IE

以上就是小編為大家帶來的淺談js文件引用方式及其同步執行與異步執行的全部內容了,希望對大家有所幫助,多多支持服務器之家~

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品69毛片高清亚洲 | 欧美激情亚洲 | 免费高清黄色 | 亚洲欧洲成人 | 精品一区二区三区免费 | 国产欧美日韩专区 | 北条麻妃在线一区二区免费播放 | 亚洲国产精品一区二区三区 | 欧美日韩精品一区二区在线观看 | 五月婷婷综合网 | 欧美午夜在线 | 日本一区二区三区在线视频 | 日本一区二区不卡 | 久久不卡 | 久久九九这里只有精品 | 欧美freesex黑人又粗又大 | 久久久久久久久久久免费视频 | 丝袜久久 | 精品在线一区 | 日韩理论在线 | 亚洲精品久久久久久下一站 | 精品96久久久久久中文字幕无 | 嫩草影院地址 | 美女视频一区 | 九九亚洲精品 | 欧美一级久久久 | 99精品久久| 国产精品亲子伦av一区二区三区 | 欧美在线免费视频 | 久草视频播放 | 中文字幕乱码亚洲精品一区 | 日韩欧美~中文字幕 | 精品国产三级 | 亚洲天堂一区二区 | 99视频这里有精品 | 一区二区三区免费在线观看 | 国产精品欧美一区二区三区 | 亚洲精品久久一区二区三区 | 日韩欧美中文在线观看 | 国产精品久久久久久吹潮 | 亚州男人天堂 |