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