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

zhm*_*zhm 4 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"]
        }]
}
Run Code Online (Sandbox Code Playgroud)
  • content.js 用于在搜索中获取用户的关键字。
  • popup.html 包含受支持的搜索引擎的列表。

当用户在弹出窗口中单击搜索引擎的图标时,我需要使用选定的搜索引擎用户将当前选项卡重定向到新的url。

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

Hai*_* Ai 5

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

chrome.tabs.update({url: "http://www.baidu.com"});
Run Code Online (Sandbox Code Playgroud)

考虑到您是从内容脚本中获取关键字的,并且想要在用户单击弹出页面中的某些按钮后重定向URL,因此可能需要Message Passingchrome.storage在内容脚本和弹出页面之间共享关键字。


Xan*_*Xan 5

有两种可能的方法:

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

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

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

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

  2. 实际触发更改。在方法A中,可以chrome.tabs.update做到这一点。在方法B中,内容脚本可以更改window.location以导航。