【问题标题】:chrome.webRequest.onBeforeRequest Only Redirect the last URLchrome.webRequest.onBeforeRequest 只重定向最后一个 URL
【发布时间】:2014-07-17 23:12:17
【问题描述】:

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

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/*

仅当 URL 为 domain4.com 时才重定向。

请帮忙。

注意我声明了

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

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

【问题讨论】:

    标签: javascript redirect google-chrome-extension xmlhttprequest


    【解决方案1】:

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

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

    【讨论】:

    • 那个,或者.split(/\r?\n/)
    • \r\n 似乎是问题所在。我将 .txt 文件的格式更改为 ://.domain1.com/*;*://*.domain2.com/*;*://*.domain3.com/* 和列表 = xhr.responseText.split(";");它有效,非常感谢。
    猜你喜欢
    • 2012-03-19
    • 2010-12-29
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2014-01-02
    • 1970-01-01
    • 2019-10-30
    相关资源
    最近更新 更多