我正在编写Chrome扩展程序,用于在不同的搜索引擎之间切换。 manifest.json
看起来像是:
{
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"activeTab"
],
"content_security_policy": "script-src 'self'; object-src 'self'",
"content_scripts": [{
"matches": ["*://*.baidu.com/*"],
"js": ["content.js"]
}]
}
content.js
用于在搜索中获取用户的关键字。 popup.html
包含受支持的搜索引擎列表。当用户点击弹出窗口中的搜索引擎图标时,我需要使用所选的搜索引擎用户将当前标签重定向到新的网址。
现在我可以获得关键字了。 问题是:如何将当前标签重定向到新网址?
答案 0 :(得分:5)
请参阅chrome.tabs.update
,您可以通过以下代码更新当前标签的网址
chrome.tabs.update({url: "http://www.baidu.com"});
考虑到您从内容脚本中获取关键字,并希望在用户点击弹出页面中的某个按钮后重定向该网址,您可能需要Message Passing或chrome.storage在内容脚本和弹出窗口之间共享关键字页。
答案 1 :(得分:4)
有两种可能的方法:
一个。让弹出窗口处理重定向 B.让内容脚本处理重定向。
在这两种情况下,您都需要解决2个问题:
在两者之间传递信息。在方法A中,您需要从内容脚本中获取关键字。在方法B中,您需要告诉内容脚本切换到哪个引擎。
两者都是使用Messaging解决的。我建议使用chrome.tabs.sendMessage
从弹出窗口到内容脚本进行消息传递(并在方法A中进行响应),因为在另一个方向上,内容脚本不知道何时发送消息(弹出窗口可能已关闭)。
实际触发更改。在方法A中,chrome.tabs.update
可以解决问题。在方法B中,内容脚本可以更改window.location
以导航。