Chrome扩展程序:在上下文菜单中重定向

时间:2011-12-05 11:29:15

标签: google-chrome google-chrome-extension

我的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包含扩展名ID且不可编辑。

有解决方法吗?

3 个答案:

答案 0 :(得分:1)

您的代码在扩展程序的后台窗口中执行,window对象是后台窗口。要更改选项卡位置,您需要在选项卡中执行代码。您可以使用chrome.tabs.executeScript method执行此操作。像这样(未经测试):

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

请注意,内容脚本(注入选项卡的脚本)无法直接访问后台窗口的变量。这就是我将obj直接放入要在选项卡中执行的代码的原因。

答案 1 :(得分:0)

使用chrome.tabs.create API。

答案 2 :(得分:0)

您可以使用chrome.tabs.update API更改位置:

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

与Wladimir提出的chrome.tabs.executeScript方法不同,这不需要选项卡中的脚本执行权限。