Пытаюсь интегрировать мой букмарклет в расширение Chrome, но по какой-то причине это не работает - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь интегрировать свой букмарклет в расширение Chrome, но по какой-то причине оно не работает

Я попытался вставить:

chrome.tabs.executeScript(null, {file: "demo.js"});

Я пробовал оба в popup.html; background.html

также у меня есть в файле манифеста:

"permissions": [   
"tabs",
"http://*/*",
"https://*/*",
"notifications",
"contextMenus"
]

my demo.js должен открыть всплывающее окно, в котором вы вводите поисковую фразу, а затем открывается страница википедии. (пример взят здесь: http://coding.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/)

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

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

1 Ответ

0 голосов
/ 25 ноября 2011

Есть простой пример chrome.tabs.executeScript, работающий на http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/, если вы хотите взглянуть на это.

Сравните ваш файл manifest.json с manifest.json, чтобы найти различия в настройке вашего браузера. Действия и фоновая страница (насколько я могу судить по вашему блогу, у вас не должно быть всплывающей страницы).сообщение).В частности, вещи, которые вы, вероятно, хотите:

"background_page": "background.html",
"browser_action": {
    "name": "Search Wikipedia",
    "icons": ["icon.png"]
},

Вот как они настраивают свое действие browserAction для вызова executeScript () при нажатии на значок расширения, что звучит примерно так, как вы хотите это сделать:

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(
        null, {code:"document.body.style.background='red !important'"});
});

В вашем случае это выглядело бы больше так (в background.js - посмотрите, как их background.html имеет <script src="background.js"></script>; убедитесь, что ваш manifest.json включает background.html, как они делают):

// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "demo.js"});
});
...