Расширения Chrome: перенаправление в контекстное меню - PullRequest
1 голос
/ 05 декабря 2011

У меня есть следующий код в моем background.html.

var child1 = chrome.contextMenus.create(  {"title": "test '%s'",  "onclick": callLocalhost, "contexts":"selection"]});
function callLocalhost(obj){
    window.location.href="http://localhost/"+obj.selectionText;
}

функция вызывается, но перенаправление не работает.

window.location.href содержит идентификатор расширения и не редактируется.

Есть ли обходной путь?

Ответы [ 3 ]

1 голос
/ 10 декабря 2011

Ваш код выполняется в фоновом окне вашего расширения, объект window является фоновым окном.Для изменения местоположения вкладки необходимо выполнить код на вкладке.Вы делаете это с помощью метода chrome.tabs.executeScript .Примерно так (не проверено):

function callLocalhost(obj, tab){
    chrome.tabs.executeScript(tab.id, {
        code: "var obj = " + JSON.stringify(obj) + ";" +
              "window.location.href='http://localhost/'+obj.selectionText;"
    });
}

Обратите внимание, что скрипт содержимого (скрипт, введенный во вкладку) не может напрямую обращаться к переменным фонового окна.Вот почему я помещаю obj непосредственно в код, который будет выполнен на вкладке.

0 голосов
/ 10 декабря 2011

Вы можете использовать API chrome.tabs.update для изменения местоположения:

function callLocalhost(info, tab) {
  chrome.tabs.update(
      info.tab,
      {"url": obj."http://localhost/" + info.selectionText});
}

В отличие от подхода chrome.tabs.executeScript, предложенного Владимиром, для этой вкладки не требуются разрешения на выполнение скрипта.

0 голосов
/ 05 декабря 2011

Используйте API chrome.tabs.create .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...