Я новичок в расширениях Chrome, поэтому могу использовать неправильные термины.
Я создал расширение
manifest.json
{
"name": "Run code in page",
"version": "1.1",
"manifest_version": 2,
"content_scripts": [{
"js": ["contentscript.js"],
"matches": ["https://*/*"]
}],
"web_accessible_resources": ["*.js"],
"default_locale": "en"
}
contentscript.js
function injectScript(script) {
var s = document.createElement('script');
s.src = chrome.extension.getURL(script);
(document.head || document.documentElement).appendChild(s);
}
injectScript('script.js');
injectScript('otherscript.js');
script.js
console.log('script.js');
otherscript.js
console.log('otherscript.js');
Это работает, я вижу это в выводе:
script.js
otherscript.js
Все хорошо, загружаются оба скрипта, мне нужно добавить jQuery таким же образом, чтобы я мог получить доступjQuery из моего сценария.
Итак, я
injectScript('jquery.js');
Но теперь я получаю следующую ошибку
Denying load of chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/jquery.js. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.
Если я смотрю на DOM, я вижу это
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/script.js"></script>
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/otherscript.js"></script>
<script src="chrome-extension://abdiolbenneaffeaedmfeeanlephlnoo/jquery.js"></script>
Если я добавлю расширение Chrome: //abdiolbenneaffeaedmfeeanlephlnoo/jquery.js в URL, я смогу получить к нему доступ.
- изменить
Если я загружу jquery извнеон загрузится, так что, думаю, я могу это сделать.например,
function injectExternalScript(script) {
var s = document.createElement('script');
s.src = script;
(document.head || document.documentElement).appendChild(s);
}
injectExternalScript('https://code.jquery.com/jquery-3.3.1.min.js');