gpt4 book ai didi

javascript - IE9-SCRIPT5009 : "jQuery" is undefined

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:03:28 24 4
gpt4 key购买 nike

以下代码在 IE9 中遇到错误 SCRIPT5009: "jQuery"is undefined(也可能在较旧的 IE 版本中):

var $tx;
if (window.jQuery) {
$tx = jQuery;
if( jQuery().jquery.replace(".", "") < 17.1 ) {
addjQuery();
}
} else {
addjQuery();
}
function addjQuery() {
document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><\/script>');
document.write('<script type="text/javascript">$tx = jQuery.noConflict();<\/script>');
}
document.write('<script src="workingScript.js"><\/script>');

我解决了!这种方式工作正常:

var $tx;
if (window.jQuery) {
$tx = jQuery;
if( jQuery().jquery.replace(".", "") < 17.1 ) {
addjQuery();
}
} else {
addjQuery();
}
function addjQuery() {
loadScript("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function(){
$tx = jQuery.noConflict(true);
});
}
document.write('<script src="workingScript.js"><\/script>');

function loadScript(url, callback){

var script = document.createElement("script")
script.type = "text/javascript";

if (script.readyState){ //IE
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}

workingScript.js:

(function ($) {
// some code here
})($tx);

"$tx = jQuery.noConflict();" 如果 addjQuery 函数被调用,这里会发生错误。如果该网站已经使用当前的 jQuery 版本,则一切正常。

有没有人知道如何解决这个问题?

最佳答案

您的脚本在执行期间会加载其他脚本,它们不会同步执行而是异步执行。当 $tx = jQuery.noConflict(); 执行时,无法保证 jQuery 已加载。

如果需要同步做see this question ,或者更好的是使用类似 RequireJS 的东西为你处理这个。 (它也允许这种回退)。

关于javascript - IE9-SCRIPT5009 : "jQuery" is undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863536/

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