繁体   English   中英

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

[英]How to redirect current tab's url in 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包含支持的搜索引擎列表。

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

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

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

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

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

有两种可能的方法:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM