gpt4 book ai didi

javascript - jQuery noConflict 不工作

转载 作者:行者123 更新时间:2023-11-30 18:21:17 27 4
gpt4 key购买 nike

我有以下一段 JavaScript,将从客户的网站引用。它使用 jQuery 1.5,所以我的问题是如果客户端已经加载了一个 jQuery 实例怎么办?或者替代的 JavaScript 库?

我正在使用 noConflict() 来尝试解决这个问题,但它似乎不起作用,我也不知道为什么。感谢任何帮助

主要问题是我收到一个返回错误,告诉我 jQueryMH 未定义,但我在设置 keepAlive 函数的时间间隔之前明确定义了它。

var head    = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = '//ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js';
script.type = 'text/javascript';
script.onload = script.onreadystatechange = function() {
var jQueryMH = jQuery.noConflict(true);
setInterval(keepAlive(), 5000);
};
head.appendChild(script);
function keepAlive() {
var mhProtocol = ((document.location.protocol == "https:") ? "https://" : "http://");
var randomNumber = Math.floor(Math.random()*10000);
var mhVisitorId = document.cookie.match('mhVisitorId=(.*?)(;|$)');
var urlParamString = "";
if(mhVisitorId) {
urlParamString = "&mhVisitorId=" + encodeURIComponent(mhVisitorId[1]);
}
var mhUrl = "www.urlishere.com";
//var jQueryMH = jQuery.noConflict();
jQueryMH.ajax({
url: mhUrl,
dataType: 'jsonp'
});
}

除此之外,我尝试在函数本身内设置 noConflict(),这有效并允许我引用 jQueryMH,但随后我们遇到了以下问题,可能是因为它在每次函数运行时都设置了 noConflict(每次5s)

我设置的外部包含此 JS 脚本的测试页面已经加载了 jQuery 1.8,然后加载了上述脚本。所以因为我的 noConflict,我希望 jQueryMH.fn.jquery 返回 1.5.0 和 jQuery.fn.jquery 返回 1.8;但是它们都返回 1.5.0,这意味着我的 noConflict 不工作,因为 jQuery 不会保留,因为版本 1.8 库已经加载到客户网站上。

最佳答案

你实际上需要noconflict 第一个 版本的 jQuery,然后才能加载第二个版本,否则第二个版本只会覆盖第一个版本。

除此之外,您的 undefined variable 问题是因为您正在调用 .noconflict 引起的在函数中并将 jQuery 分配给仅在函数范围内的替代变量。

我想你需要先做:

var origjQuery = jQuery.noconflict();

然后像上面那样加载新的 jQuery,然后是 noconflict那:

var jQueryMH = jQuery.noconflict();

然后恢复原来的jQuery:

var jQuery = origjQuery.noconflict();

在全局范围内执行上述所有操作。

关于javascript - jQuery noConflict 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985563/

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