Общие вопросы
Привет! Я копаюсь в мире расширений Chrome, и у меня возникли проблемы с общим рабочим процессом. Похоже, что Google недавно перешел на активную пропаганду страниц событий вместо того, чтобы хранить все в background.js и background.html. Я понимаю, что отчасти это означает, что мы должны передать большую часть вашей логики расширения сценарию содержимого.
В праймере страницы событий Google у них есть сценарий содержания, указанный в файле manifest.json. Но в их расширении примера страницы событий он вводится через этот блок кода в background.js: chrome.tabs.executeScript(tab.id, {file: "content.js"}, function() { });
В чем преимущества одного способа перед другим?
Мой код
Я собираюсь использовать программный способ внедрения скрипта содержимого, как в примере Google.
manifest.json
{
"manifest_version": 2,
"name": "Test",
"description": "Let's get this sucker working",
"version": "0.0.0.1",
"permissions": [
"tabs",
"*://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "icon.png"
}
}
background.js
chrome.browserAction.onClicked.addListener(function() {
console.log("alert from background.js");
chrome.tabs.executeScript({file: "jquery-2.0.2.min.js"}, function() {
console.log("jquery Loaded");
});
chrome.tabs.executeScript({file: "content.js"}, function() {
console.log("content loaded");
});
});
content.js
console.log('you\'r in the world of content.js');
var ans = {};
ans.createSidebar = function() {
return {
init: function(){
alert("why hello there");
}
}
}();
ans.createSidebar.init();
Я могу получить первые 3 console.log
операторов для отображения в отладчике фоновой страницы. Я также могу получить оповещение от content.js, чтобы оно появилось на любом веб-сайте. Но я не могу видеть console.log
из content.js, а также не могу просматривать какой-либо JS из content.js. Я пробовал искать в разделе «сценарии содержимого» вкладки «Источники» отладчика фоновой страницы. В нескольких других сообщениях на SO было предложено добавить debugger;
операторов, чтобы показать это, но мне ни с чем не везет. Ближайшее решение, которое я видел, - это этот пост, но это делается путем перечисления сценария содержимого в манифесте.
Любая помощь будет оценена по достоинству. Спасибо!