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 。分裂(」;」);它的工作原理,非常感謝。 –