Javascript 如何重定向当前选项卡';Chrome扩展中的url?

Javascript 如何重定向当前选项卡';Chrome扩展中的url?,javascript,google-chrome,google-chrome-extension,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-

我正在写一个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
    包含支持的搜索引擎列表
当用户在弹出窗口中单击搜索引擎图标时,我需要使用所选的搜索引擎用户将当前选项卡重定向到新的url

现在我可以得到关键字了问题是:如何将当前选项卡重定向到新url?

请参见,您可以通过以下代码更新当前选项卡的url

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

考虑到您从内容脚本获取关键字,并希望在用户单击弹出页面中的某个按钮后重定向url,您可能需要在内容脚本和弹出页面之间共享关键字。

有两种可能的方法:

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

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

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

    这两个问题都是使用。我建议使用
    chrome.tabs.sendMessage
    (并在方法A中响应)从弹出窗口向内容脚本发送消息,因为在另一个方向,内容脚本不知道何时发送消息(弹出窗口可能会关闭)

  • 实际上触发了变化。在方法A中,实现了这一点。在方法B中,内容脚本可以更改
    窗口位置
    以导航离开


  • 哪一部分存在问题?你已经在弹出窗口中完成关键字检测和单击处理程序了吗?是的,我现在可以得到关键字了。但我不知道如何重定向到新的url。你知道怎么做吗?那太好了-虽然我有点困惑。为什么
    chrome.tabs.update
    只重定向当前选项卡,而不是所有选项卡?它通常需要第一个参数
    tabId
    ,但如果没有提供,则默认为当前活动选项卡。实际上,与
    tabs.sendMessage
    相同:它默认为活动选项卡。这解释了很多。谢谢