我们的应用程序加载 jQuery 1.10.2 然后加载https://appcenter.intuit.com/Content/IA/intuit.ipp.anywhere.js
来自直觉。 Anywhere 脚本正在添加<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
到头部并重新加载 jQuery。
这会擦除命名空间并破坏我们的大部分代码。脚本不应该看到 jQuery 已经加载了吗?我们如何防止 jquery 被重新加载?
谢谢,
福雷斯特
EDIT:
问题似乎在于window.jQuery.fn.jquery < "1.4.2"
返回 false 作为'1.10.2' < '1.4.2'
也会返回 false。这是因为 javascript 会将其视为1.1.2 < 1.4.2
。另一种选择是删除|| window.jQuery.fn.jquery < "1.4.2"
如果您确定要包含 jQuery,只需更改附加脚本标记的代码部分即可。
在脚本的底部。改变
// function that starts it all. timeout is 0
(function() {
// these are the domains whose js files we're going to look at
// intuit.ipp.ourDomain = /(.intuit.com).*?#(.*)/;
intuit.ipp.ourDomain = /intuit.com$/;
if(window.jQuery === undefined || window.jQuery.fn.jquery < "1.4.2") {
// minimum version 1.4.2
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js");
script_tag.onload = function () {
if(window.jQuery) {
intuit.ipp.jQuery = window.jQuery.noConflict(true);
intuit.ipp.anywhere.windowLoad();
}
};
script_tag.onreadystatechange = function () { // Same thing but for IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
script_tag.onload();
}
};
// Try to find the head, otherwise default to the documentElement
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
} else {
// we do have jquery
intuit.ipp.jQuery = window.jQuery;
intuit.ipp.anywhere.windowLoad();
}
})();
To
// function that starts it all. timeout is 0
(function () {
// these are the domains whose js files we're going to look at
// intuit.ipp.ourDomain = /(.intuit.com).*?#(.*)/;
intuit.ipp.ourDomain = /intuit.com$/;
// we do have jquery
intuit.ipp.jQuery = window.jQuery;
intuit.ipp.anywhere.windowLoad();
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)