0

如果URL位于黑名单中,我正在构建重定向到google.com的扩展程序。 我将黑名单存储在本地文件“list.txt”中,并使用XMLHttpRequest来检索URL列表。 我遇到的问题是,chrome.webRequest.onBeforeRequest只有在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/* 

如果URL domain4.com只是重定向。

请帮忙。

注意,我宣布

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

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

回答

1

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

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

那,还是'.split(/ \ r?\ n /)' – Xan

+0

Xan's更好。编辑。 – Scott

+0

\ r \ n似乎是问题所在。我将.txt文件的格式更改为*://*.domain1.com/*; *://*.domain2.com/*; *://*.domain3.com/*和list = xhr.responseText 。分裂(”;”);它的工作原理,非常感谢。 –