如何在Chrome扩展程序中重定向当前标签的网址?

时间:2016-05-10 09:35:23

标签: javascript google-chrome google-chrome-extension

我正在编写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包含受支持的搜索引擎列表。

当用户点击弹出窗口中的搜索引擎图标时,我需要使用所选的搜索引擎用户将当前标签重定向到新的网址。

现在我可以获得关键字了。 问题是:如何将当前标签重定向到新网址?

2 个答案:

答案 0 :(得分:5)

请参阅chrome.tabs.update,您可以通过以下代码更新当前标签的网址

chrome.tabs.update({url: "http://www.baidu.com"});

考虑到您从内容脚本中获取关键字,并希望在用户点击弹出页面中的某个按钮后重定向该网址,您可能需要Message Passingchrome.storage在内容脚本和弹出窗口之间共享关键字页。

答案 1 :(得分:4)

有两种可能的方法:

一个。让弹出窗口处理重定向 B.让内容脚本处理重定向。

在这两种情况下,您都需要解决2个问题:

  1. 在两者之间传递信息。在方法A中,您需要从内容脚本中获取关键字。在方法B中,您需要告诉内容脚本切换到哪个引擎。

    两者都是使用Messaging解决的。我建议使用chrome.tabs.sendMessage从弹出窗口到内容脚本进行消息传递(并在方法A中进行响应),因为在另一个方向上,内容脚本不知道何时发送消息(弹出窗口可能已关闭)。

  2. 实际触发更改。在方法A中,chrome.tabs.update可以解决问题。在方法B中,内容脚本可以更改window.location以导航。