gpt4 book ai didi

javascript - Js/jQuery 包含函数在 IE 中不起作用

转载 作者:行者123 更新时间:2023-11-30 16:32:29 25 4
gpt4 key购买 nike

我有以下代码

function includeJSLib(lib, id, callback) {
if (!document.getElementById(id)) {
var s = document.createElement('script');
s.setAttribute('id', id);
s.setAttribute('async', 'false');
s.setAttribute('type', 'text/javascript');
s.src = lib;
document.getElementsByTagName('head')[0].appendChild(s);
s.onload = callback;
} else {
callback();
}
}
includeJSLib('https://code.jquery.com/jquery-1.11.3.min.js', 'jqueryInclude', function(){
jQuery(document).ready( function($) {
if ($('body').hasClass('class')) { do something }
});
});

它将加载 jQuery。在回调函数中有一些自定义代码。自定义代码在 Firefox 和 Chrome 中运行良好,但在 IE 中运行不正常。

Internet Explorer 完全忽略代码片段。在 IE 10/11 中测试。

有人知道问题出在哪里吗?

感谢和问候,诺克斯

附注IE 调试器什么也没说,它只是跳过片段。而且我必须以这种方式包含 jQuery(最好不要问 :P)

最佳答案

对于 IE 而不是 onload使用 onreadystatechange :

function includeJSLib(lib, id, callback) {
if (!document.getElementById(id)) {
var s = document.createElement('script');
s.setAttribute('id', id);
s.setAttribute('async', 'false');
s.setAttribute('type', 'text/javascript');
s.src = lib;
document.getElementsByTagName('head')[0].appendChild(s);
var loaded = false;
s.onload = s.onreadystatechange = function() {
var readyState = this.readyState || 'complete';
if (!loaded && ('loaded' === readyState || 'complete' === readyState)) {
loaded = true;
// Handle memory leak in IE
s.onload = s.onreadystatechange = null;
s.parentNode.removeChild(s);
callback();
}
};
// s.onload = callback;
} else {
callback();
}
}
includeJSLib('https://code.jquery.com/jquery-1.11.3.min.js', 'jqueryInclude', function() {
jQuery(document).ready( function($) {
if ($('body').hasClass('class')) { do something }
});
});

关于javascript - Js/jQuery 包含函数在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com