Почему скрипты содержимого не могут использовать jQuery, загруженный на фоновой странице? - PullRequest
0 голосов
/ 06 марта 2012

Я создаю свое первое расширение, и у меня возникают проблемы с загрузкой фоновых скриптов, работающих в контентных скриптах, что вызывает сомнения в том, действительно ли какой-либо скрипт, загруженный на фоновой странице, действительно доступен для всех контентных скриптов.

У меня есть два файла javascript, functions.js и content.js, которые оба используют jQuery. Я загружаю jQuery и скрипт функции на фоновую страницу, чтобы уменьшить разбор при каждом совпадении сайта. Достаточно одного раза, поскольку все они являются функциями.

manifest.json НЕ РАБОТАЮЩИЙ

{
  "name": "extension name",
  "background_page": "background.html",
  "content_scripts": [ {
    "js": [ "js/functions.js", "js/content.js" ],
    "matches": [ "http://*.mysite.com/*" ],
    "exclude_globs": [ "*board*" ],
  } ],
  "version": "0.1"
}

Примечание: использование «include_globs» для загрузки jQuery CDN не работает. Эмуляция @include не удалась, поэтому мне пришлось включить jQuery с расширением.

manifest.json РАБОТАЕТ

{
  "name": "extension name",
  "background_page": "background.html",
  "content_scripts": [ {
    "js": [ "js/jquery-1.7.1.min.js", "js/functions.js", "js/content.js" ],
    "matches": [ "http://*.mysite.com/*" ],
    "exclude_globs": [ "*board*" ],
  } ],
  "version": "0.1"
}

Примечание: здесь я удалил загрузку jQuery на фоновой странице.

background.html

<html>
    <head>
        <script src="js/jquery-1.7.1.min.js"></script>
        <script src="js/functions.js"></script>
    </head>
</html>

content.js

console.log('testing console');  // this works
alert('testing native JS');  // this works
$('<div id="myTestingDiv" />').prependTo('body');  // this fails

1 Ответ

3 голосов
/ 06 марта 2012

Фоновые страницы, всплывающие страницы и сценарии содержимого - все они выполняются в различных области действия и документе.

Любые переменные и сценарии, определенные на странице фона,не доступны напрямую в скриптах контента, и наоборот.С другой стороны, сценарии с внедренным содержимым могут взаимодействовать друг с другом.

Вы можете получить доступ к глобальным (window) объектам, используя:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...