Вопрос по jquery, google-chrome, google-chrome-extension – Как использовать jQuery в Chrome extensions ContentScript без конфликтов

9

Как я могу использовать JQuery в моем расширении Google Chrome, не конфликтуя со сценариями на веб-странице? потому что когда я использую jQuery и другой скрипт на веб-странице использует $, мой контент-скрипт умирает или эта веб-страница умирает,

Я не понимаю. Сценарии содержания и страница изолированы. Denys Séguret

Ваш Ответ

1   ответ
27

real Ответ заключается в том, что вам не нужно использовать «самозапускающиеся частные функции». Вы должны понимать, что скрипты контентавыполнен в изоляции поэтому не может конфликтовать с ресурсами, используемыми веб-сайтами по дизайну.

Если вы хотите использовать библиотеку в своем скрипте контента, предпочтительный метод - просто включить ее в расширение / приложение, а затем сначала загрузить ее в манифест;

{
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "js": ["jquery.js", "myscript.js"]
    }
  ]
  ...
}

Это приведет к загрузке jquery.js в вашу среду сценариев с закрытым содержимым, а затем к myscript.js. Ваш код будет намного чище и модульным, так как он не содержитminified код для внешних библиотек.

Source: https://developer.chrome.com/extensions/content_scripts

Я вижу, что документ точно описывает случай jquery: "Например, скрипт содержимого может включать JQuery v1, а страница может включать JQuery v2, и они не будут конфликтовать друг с другом".
Это не проблема из-за того, как скрипты содержимого изменяют среду JavaScript.execution environment Раздел официальной документации освещает это довольно хорошо.
JQuery сам по себе является просто библиотекой и не вносит никаких изменений, о которых вы не говорите. Как и большинство библиотек, распространенных библиотек, он раскрывает свою функциональность только за счет использования одной или нескольких глобальных переменных. Если вы используете библиотеку, которая изменяет DOM без каких-либо инструкций, вы, вероятно, будете знать об этом, поскольку такое поведение предположительно идет рука об руку с его функциональностью.

Похожие вопросы