我的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且不可编辑。
有解决方法吗?
答案 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
方法不同,这不需要选项卡中的脚本执行权限。