我正在开发chrome扩展,并在其中使用jquery v 3.2.1。该扩展程序可在多个网站(例如20个)上运行,并且与jquery无关。 但是在这样一个使用jquery v 1.8.2的网站上,存在一些jquery冲突。例如,当我打开扩展程序时,该站点无法显示许多组件。我得到的错误是
Uncaught TypeError: Cannot read property 'msie' of undefined
。
我从有关此主题的答案之一中尝试了以下方法。
$ = jQuery.noConflict();
jQuery.browser = {};
(function () {
jQuery.browser.msie = false;
console.log("coming inside");
jQuery.browser.version = 0;
if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
jQuery.browser.msie = true;
jQuery.browser.version = RegExp.$1;
}
})();
但这也不能解决我的问题。我仍然遇到相同的错误。请告诉我如何解决此错误?
答案 0 :(得分:0)
注意:这不是真正解决问题的解决方案,而是避免问题的解决方法。
因此,当jquery 3.2.1(由扩展名加载)与jquery 1.8.x(由网站加载)发生冲突时,出现了问题。因此,我决定不为该特定网站加载jquery。
因此,在网站的内容脚本中,我将抛出以下内容。
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
,然后在后台页面中,从我加载jquery的位置添加以下内容。
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting != "hello")
{
loadjquery() // load jquery
sendResponse({farewell: "goodbye"});
}
});