chrome.webRequest.onBeforeRequest仅重定向最后一个URL

时间:2014-07-17 09:58:03

标签: javascript redirect google-chrome-extension xmlhttprequest

如果网址位于黑名单中,我正在构建一个重定向到google.com的扩展程序。 我将黑名单存储在一个文件" list.txt"本地并使用XMLHttpRequest来检索URL列表。 我遇到的问题是,如果URL是列表中的最后一个,则chrome.webRequest.onBeforeRequest仅重定向。 这是我的代码:

var list = ["something.something/something"];

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        list = xhr.responseText.split(/\n/);
        abc();
    }
}

xhr.open("GET", chrome.extension.getURL('text/list.txt'), true);
xhr.send(null);

function abc() {
    chrome.webRequest.onBeforeRequest.addListener(
        function (details) {
            return {redirectUrl: "https://google.com"};
        },
        {urls: list, types: []},
        ["blocking"]);
}

文件" list.txt"是:

*://*.domain1.com/*
*://*.domain2.com/*
*://*.domain3.com/*
*://*.domain4.com/*

如果网址为domain4.com,则仅重定向。

请帮忙。

请注意,我声明

var list = ["something.something/something"];

因为如果列表为空,chrome.webRequest.onBeforeRequest将重定向每个URL。

1 个答案:

答案 0 :(得分:1)

我希望您使用Windows来保存.txt文件,该文件终止了\r\n行。因此除了最后一个网址之外的所有网址都以\r结尾,但不会与网址匹配。我建议:

list = xhr.responseText.split(/\r?\n/);