【问题标题】:Chrome extension to redirect user on specific urlsChrome 扩展程序可在特定 URL 上重定向用户
【发布时间】:2011-10-28 10:48:49
【问题描述】:

我想构建一个 chrome 扩展程序,它基本上检查当前域是否在列表中,如果是,则将用户重定向到不同的 url,让他点击一个链接,然后转到最初想要的 url。

我对 Javascript 或 chrome 扩展没有太多经验,但这对于初学者项目来说似乎很容易。

我想要的是有一个这种结构的文件

urlregex1#redirecttourl1
urlregex2#redirecttourl2
.
.
.

并让 chrome content_script 解析每个 url 并检查其中一个正则表达式是否匹配。

如果是这样,脚本必须以某种方式保存原始 url,然后重定向用户。

任何人都可以告诉我如何实现这一点的正确方向吗?我完全迷失在 javascript 函数、chrome 扩展 api 之间,......

【问题讨论】:

  • 嗨,Kai,你能解释一下你是怎么做到的吗,我基本上是一个移动开发者,在 javascript 方面经验很少,这将是我的第一个插件,你能帮我吗

标签: javascript google-chrome-extension


【解决方案1】:

您必须在后台页面中设置该功能,以便它在所有选项卡上运行。

// add listener for all tabs
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    var safesite = false;

    if (changeInfo === "loading") {
        // logic for checking white list, using tab.url

        if (!safesite) {
            chrome.tabs.update(tabId, { url: 'www.google.com' });
        }
    }
});

本质上,您正在向所有选项卡添加事件侦听器。加载时,您检查它是否在白名单上。如果它是一个列入黑名单的网站,请将它们重定向到您喜欢的任何网址。您还可以在扩展目录中包含一个 .html 文件以将它们重定向到。这会在所有选项卡上触发,包括 Web Inspector,因此您可能需要输入一些逻辑来仅检查 http(s) 请求。

此外,这种方法可以简要显示列入黑名单的页面,然后将您重定向到blocked_url.html 页面。实验性 API,webRequest,应该提供在加载页面之前过滤请求的能力,但在它成为官方 Chrome API 的一部分之前,您将无法将其上传到 Chrome 网上应用店。如果是供个人使用,请随意使用。

最后一个开发技巧:您只能通过扩展设置页面 (chrome://settings/extensionSettings) 调试 background.html。打开扩展程序的向下钻取,您将看到“检查活动视图:”,您可以在其中单击指向当前运行的任何扩展程序特定页面的链接。这样做会打开该页面的 Web Inspector。

在多次挠头后,我偶然发现了它,从那以后它就成了救命稻草。

【讨论】: