我正在构建一个依赖于jquery被加载的小部件 - 我正在使用以下内容来加载它和我的代码:
(function () {
var jqueryVersion = (window.jQuery !== undefined) ? window.jQuery.fn.jquery.charAt(0) + window.jQuery.fn.jquery.charAt(2) : 0;
var jQuery;
/******** Called once jQuery has loaded ******/
function scriptLoadHandler() {
jQuery = window.jQuery.noConflict(true);
main();
}
/******** Load jQuery if not present *********/
if (parseInt(jqueryVersion) < 17) {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js");
script_tag.onload = scriptLoadHandler;
script_tag.onreadystatechange = function () { // Same thing but for IE
if (this.readyState === 'complete' || this.readyState === 'loaded') { scriptLoadHandler(); }
};
document.getElementsByTagName("head")[0].appendChild(script_tag);
} else {
jQuery = window.jQuery;
main();
}
function main() {
//my code goes in here
//leaving blank for now because I still get error
}
})();
我从这里得到了大部分内容:http://alexmarandon.com/articles/web_widget_jquery/
我需要jquery 1.7或更高版本因为我使用.on()方法。当我使用早于1.7的jquery在页面上运行它时,我有时会在IE中遇到错误,导致我认为与旧版本的jquery或页面上的其他js存在冲突。一些错误:
SCRIPT5007:无法获取未定义或空引用的属性'forceInt'
SCRIPT5007:预期的对象
SCRIPT5007:无法获取未定义或空引用的属性“缓动”
SCRIPT438:对象不支持属性或方法'on'
如果我改变
,这些错误就会消失jQuery = window.jQuery.noConflict(true);
到
jQuery = window.jQuery.noConflict();
我做错了吗?
答案 0 :(得分:3)
你的问题可能是因为“处理程序”的问题。被叫两次。
http://msdn.microsoft.com/en-us/library/ie/hh180173(v=vs.85).aspx
此外,取自http://api.jquery.com/jQuery.noConflict/
&#34;如果有必要,您可以通过传递true来释放jQuery名称 作为方法的参数。这很少是必要的,如果你 必须这样做(例如,如果你需要使用的多个版本 jQuery库在同一页面上),你需要考虑最多 插件依赖于jQuery变量的存在而可能不存在 在这种情况下正确运作。&#34;