本文阐述了解决在IE8的脚本标签的onload的动态生成。分享给你供你参考。具体分析如下:

今天做项目,发现一个奇怪的问题,动态创建的脚本标签不能在IE8的onload事件触发。

代码如下:

复制代码代码如下:var loadjs =功能(SRC,好玩){

var脚本= null;

脚本= document.createelement(脚本);

script.type =文本/ javascript;

script.src = SRC;

如果(typeof乐趣=函数){

script.onload =乐趣;

}



document.getelementsbytagname(头){ 0 }。appendChild(剧本);

};



LoadJs(JS / jquery-1.11.0版。

console.log(jquery);

});



LoadJs(JS 测试。

console.log(从试验。JS );

});

Test.js:

console.log(typeof jQuery);

运行结果:

复制代码如下:定义 / / test.js运行时,jQuery是不加载

类型 / / jQuery从控制台运行,但要找到一个jQuery对象,加载顺序问题

函数

和script.onload尚未在上面的代码中执行,并且代码已经加载。为什么会不执行在互联网上,人们发现许多前端开发人员遇到了这个难题,发现了一些替代品,如下所示:

复制代码代码如下:var loadjs =功能(SRC,好玩){

var脚本= null;

脚本= document.createelement(脚本);

script.type =文本/ javascript;

script.src = SRC;

如果(typeof乐趣=函数){

script.onreadystatechange =函数(){

VAR r = script.readystate;

console.log(SRC +:+ R);

如果(r'loaded'r | | = = = = = =完整的){

script.onreadystatechange = null;

(有趣);

}

};

}



document.getelementsbytagname(头){ 0 }。appendChild(剧本);

};

实施结果:

复制代码代码如下:未定义

js / jquery-1.11.0.min.js:加载

Test.js:完成

从test.js

js / jquery-1.11.0.min.js:加载

从jQuery

实施步骤是相似的onload函数,但有一个问题。它不按顺序加载。当jQuery文件加载,test.js已经完成,并实现了test.js第一排第一的内容。因为test.js之前通过jQuery,未被击中。所以我们可以重写它,这样让它负载线:

复制代码代码如下:loadjs( / jquery-1.11.0 JS版。



console.log(jquery);



LoadJs(JS 测试。

console.log(从试验。JS );

});

});

实施结果:

复制代码代码如下:js / jquery-1.11.0.min.js:加载

js / jquery-1.11.0.min.js:加载

从jQuery

功能

Test.js:完成

从test.js

这一次,执行顺序是基于我们所订购的顺序,但是上面的代码非常笨拙,需要嵌套在一起。

复制代码代码如下:var loadjs =功能(SRC,好玩){

var脚本= null;

脚本= document.createelement(脚本);

script.type =文本/ javascript;

script.src = SRC;

如果(typeof乐趣=函数){

script.onreadystatechange =函数(){

VAR r = script.readystate;

console.log(SRC +:+ R);

如果(r'loaded'r | | = = = = = =完整的){

script.onreadystatechange = null;

(有趣);

}

};

}



document.write(脚本。outerHTML);

/ / document.getelementsbytagname(头){ 0 }。appendChild(剧本);



};



LoadJs(JS / jquery-1.11.0版。

console.log(jquery);

});



LoadJs(JS 测试。

console.log(从试验。JS );

});

结果的顺序是不一样的。

复制代码代码如下:函数

js / jquery-1.11.0.min.js:加载

从jQuery

Test.js:加载

从test.js

如果你改变装货顺序

复制代码代码如下:loadjs(JS 测试。

console.log(从试验。JS );

});



LoadJs(JS / jquery-1.11.0版。

console.log(jquery);

});

执行结果不同,类似于顺序加载:

复制代码代码如下:未定义

Test.js:加载

从test.js

js / jquery-1.11.0.min.js:加载

从jQuery

希望本文能对大家的javascript程序设计有所帮助。