Chrome扩展程序可在特定网址上重定向用户

时间:2011-10-27 14:37:18

标签: javascript google-chrome-extension

我想构建一个chrome扩展,它实质上检查当前域是否在列表中,如果这样将用户重定向到另一个URL,让他单击一个链接,然后转到最初想要的URL。

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

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

urlregex1#redirecttourl1
urlregex2#redirecttourl2
.
.
.

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

如果是这样,脚本必须以某种方式保存原始网址,而不是重定向用户。

任何人都可以让我在正确的方向上实现这个目标吗?我在javascript函数,chrome扩展api,....之间完全迷失了。

1 个答案:

答案 0 :(得分:4)

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

// 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网上应用店。如果是供个人使用,请随意使用。

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

经过多次头疼,我偶然发现了这一点,从那时起就一直保持着救命。