如何从1.8.2版本解决jquery msie错误?

时间:2018-12-11 07:26:50

标签: javascript jquery google-chrome-extension

我正在开发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;
    }
})();

但这也不能解决我的问题。我仍然遇到相同的错误。请告诉我如何解决此错误?

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"});
}
});