Как использовать jQuery из CDN jquery.com в расширение Chrome
Мне бы хотелось, чтобы jQuery был доступен как в скриптах контента, так и в консоли (т. е. с веб-страницы - я верю, но не уверен, поэтому вы используетеweb_accessible_resources
).
примечание: я согласен сЗиг Мандель ниже, кто заявляет, что вы не должны использовать CDN для загрузки jquery, потому что это только экономит небольшое количество места и оставляет открытой возможность того, что CDN может быть недоступен. На данный момент, я просто хочу знать,Зачем это нет работа.
Почему нетт эта работа:
manifest.json "content_scripts": [
{
...
"js": ["foo.js", "https://code.jquery.com/jquery-1.10.1.min.js", "https://code.jquery.com/jquery-1.10.1.min.map"],
"run_at": "document_idle",
"all_frames": true
}
],
"content_security_policy": "script-src 'self' https://code.jquery.com; object-src 'self'",
"web_accessible_resources": [ "https://code.jquery.com/jquery-1.10.1.min.js", "https://code.jquery.com/jquery-1.10.1.min.map"],
ошибка, которую я получаю при загрузке моего расширения:
--------------------------- Extension error
--------------------------- Could not load extension from 'C:\Users\[me]\Documents\GitHub\foo'. Could not load
javascript '' for content script.
--------------------------- OK
---------------------------
и когда мне нужен jQuery (или некоторая настраиваемая библиотека отладки и т. д.) вweb_accessible_resources
против когда?content_scripts
Вы оба должны включить файл javascript, такой как jQuery, вweb_accessible_resources
а затем ввести его. Включая jQuery вcontent_scripts
только для использования другимконтентные скрипты в расширении. Пример того, как внедрить код (локальный или нет):
function inject(script) {
if (script.match(/^http\:\/\//)){
var ssrc = document.createElement("script");
ssrc.setAttribute("src", script);
ssrc.addEventListener('load', function() {
var ssrc = document.createElement("script");
ssrc.textContent = "(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}
else {
var s = document.createElement('script');
s.src = chrome.extension.getURL(script);
s.onload = function () {
this.parentNode.removeChild(this);
};
(document.head || document.documentElement).appendChild(s);
}
}
[path_to_javascript, ...].forEach(inject) // put the javascript filename you'd like to inject in this array.