0

Я работаю над расширением Chrome, которое вставляет некоторые скрипты в Gmail, например jQuery и qtip. Он работал без каких-либо проблем, пока я не добавил расширение Chrome LinkedIn Sales Navigator, которое (я проверил) также использует jQuery.Плагин jQuery, который перезаписывается другой реализацией jQuery

После добавления, я получаю эту ошибку:

TypeError: $(...).qtip is not a function(…)

И console.log($.qtip) возвращает undefined, в то время, прежде чем добавить это расширение оно возвращалось функцию.

Мой поток, чтобы ввести эти сценарии является:

  • В "content_scripts" разделе манифеста, я добавляю content.js.
  • В файле content.js я использую document.createElement("script") для каждого скрипта и добавьте его на страницу <head>.

Я не знаю, в чем проблема, но я думаю, что это проблема с перепиской с jQuery, но я не уверен, почему и как ее решить.

Спасибо за любую помощь!

+2

Это расширение впрыскивает JQuery v2.1.1 на страницу, так вам придется использовать jQuery.noConflict() – wOxxOm

+0

Эй, приятель, спасибо за это, я не знал, что он существует. Если я хорошо разбираюсь в документах об этом, он дает возможность вернуть jquery в первую вызванную версию (или в JQuery, когда конфликт с другой библиотекой). В этом случае это будет работать, я думаю. Но я не могу знать, какая версия будет загружаться сначала все время. Должен ли я тестировать '$ .qtip', чтобы увидеть, следует ли мне вызывать' noConflict'? –

+1

Слово «версия» просто означает «экземпляр». Документация немного неоднозначна. – wOxxOm

ответ

0

Так, благодаря комментариям я узнал jQuery.noConflict(); существовала, и была в состоянии проверить наличие разыскиваемой функции и действовать соответственно:

if(!$.qtip) 
    jQuery.noConflict();