Как устранить ошибку jquery msie из версии 1.8.2? - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над расширением 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 голосов
/ 11 декабря 2018

Примечание: это не решение, которое на самом деле решает проблему, скорее это взлом, чтобы избежать проблемы.

Итак, проблема возникла, когда 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"});
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...