本文实例讲述了IE8中动态创建script标签onload无效的解决方法。分享给大家供大家参考。具体分析如下:
今天做项目,发现一个奇怪的问题,动态创建的script标签在IE8下无法触发onload事件。
代码如下:
var loadJs = function(src, fun){ var script = null; script = document.createElement("script"); script.type = "text/javascript"; script.src = src; if(typeof fun === "function"){ script.onload = fun; } document.getElementsByTagName("head")[0].appendChild(script); }; loadJs("js/jquery-1.11.0.min.js", function(){ console.log("From jQuery"); }); loadJs("test.js", function(){ console.log("From test.js"); }); test.js: console.log(typeof jQuery);
undefined // test.js运行时,jQuery还未加载 >> typeof jQuery // 从控制台上运行,却找到了jQuery对象,证明加载顺序问题 "function"
var loadJs = function(src, fun){ var script = null; script = document.createElement("script"); script.type = "text/javascript"; script.src = src; if(typeof fun === "function"){ script.onreadystatechange = function() { var r = script.readyState; console.log(src + ": " + r); if (r === 'loaded' || r === 'complete') { script.onreadystatechange = null; fun(); } }; } document.getElementsByTagName("head")[0].appendChild(script); };
undefined js/jquery-1.11.0.min.js: loading test.js: complete From test.js js/jquery-1.11.0.min.js: loaded From jQuery
loadJs("js/jquery-1.11.0.min.js", function(){ console.log("From jQuery"); loadJs("test.js", function(){ console.log("From test.js"); }); });
js/jquery-1.11.0.min.js: loading js/jquery-1.11.0.min.js: loaded From jQuery function test.js: complete From test.js
var loadJs = function(src, fun){ var script = null; script = document.createElement("script"); script.type = "text/javascript"; script.src = src; if(typeof fun === "function"){ script.onreadystatechange = function() { var r = script.readyState; console.log(src + ": " + r); if (r === 'loaded' || r === 'complete') { script.onreadystatechange = null; fun(); } }; } document.write(script.outerHTML); //document.getElementsByTagName("head")[0].appendChild(script); }; loadJs("js/jquery-1.11.0.min.js", function(){ console.log("From jQuery"); }); loadJs("test.js", function(){ console.log("From test.js"); });
function js/jquery-1.11.0.min.js: loaded From jQuery test.js: loaded From test.js
loadJs("test.js", function(){ console.log("From test.js"); }); loadJs("js/jquery-1.11.0.min.js", function(){ console.log("From jQuery"); });
undefined test.js: loaded From test.js js/jquery-1.11.0.min.js: loaded From jQuery
希望本文所述对大家的javascript程序设计有所帮助。
问题内容: 我一直在使用此函数将onload处理程序附加到脚本标签,这似乎是Internet上推荐的方法。 但是,如果页面已加载(在8中测试),则在Internet Explorer中不起作用。您可以看到它可以在普通浏览器中运行(加载脚本时会发出警报)。 我想念什么吗? 谢谢 问题答案: 您应该致电,它确实在寻找您想要的东西。 编辑 :这是来自jQuery的相关源代码:
本文向大家介绍IE8中使用javascript动态加载CSS的解决方法,包括了IE8中使用javascript动态加载CSS的解决方法的使用技巧和注意事项,需要的朋友参考一下 众所周知做前端开发的都恨不得踹IE开发者几脚,IE开发者名声之差不低于GFW开发者,昧着良心搞坏市场,人人得而诛之,但是在中国这些地方市场占有率摆在那里,没办法只能向现实低头。 最近我们产品需要在浏览器里动态载入一段CSS,
本文向大家介绍JavaScript动态创建link标签到head里的方法,包括了JavaScript动态创建link标签到head里的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript动态创建link标签到head里的方法。分享给大家供大家参考。具体分析如下: 相信有很多做前端的朋友碰到过需要用 JavaScript 动态创建样式表标签——link标签。这里我们就来说
本文向大家介绍JS创建Tag标签的方法详解,包括了JS创建Tag标签的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS创建Tag标签的方法。分享给大家供大家参考,具体如下: 一 . 创建标签其原理就是 创建一个节点; 赋予节点样式; 对节点进行赋值; 添加节点到父元素 二. 样式图: 三. 主要代码流程: HTML部分: css部分: js部分: 更多关于JavaScript相
本文向大家介绍全面了解js中的script标签,包括了全面了解js中的script标签的使用技巧和注意事项,需要的朋友参考一下 在页面中用script标签引入javascript文件(<script type="text/javascript" src="js文件地址"></script>),浏览器在渲染页面的时候,当读取到script元素时,浏览器不会以HTML或XHTML的方式处理其内容,浏览
本文向大家介绍HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法,包括了HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法的使用技巧和注意事项,需要的朋友参考一下 HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单。 HTML5的新标签元