1

我試圖在瀏覽其他網站時使用Chrome擴展程序獲取網站的內容。 我在發生chrome.webRequest.onCompleted時調用了「XMLHttpRequest」 但是每當我調用方法XHR.Open時,都會在XHR對象的Status和StatusText字段中得到以下錯誤:[Exception:DOMException]。Chrome擴展程序:webRequest.onCompleted.addListener + XHR

有什麼想法?

謝謝。

我使用下面的代碼:

chrome.webRequest.onCompleted.addListener(
function(details) { 
    if (details.url.substring(0, 23) == "https://www.google.com/") // I know I do not need this 
    { 
     console.info("URL :" + details.url); 
     FindData("www.altavista.com"); 
    } 
}, 
// filters 
{ 
    urls: [ 
     "http://*.google.com/*", 
     "https://*.google.com/*", 
    ], 
    types: ["image"] 
}, 
["responseHeaders"]); 

function FindData(strURL) { 
    var req = new XMLHttpRequest(); 
    req.open("GET", strURL, true); 
    req.onreadystatechange=function() { 
     if (req.readyState==4) { 
      if (req.status==200) 
      { 
       console.info("Sucess!"); 
       console.info("Data: " + req.responseText); 
      } 
     else if (req.status==404) console.info("URL doesn't exist!") 
     else console.info("Error: Status is " + req.status) 
     } 
    } 
    req.send(); 
} 

我的manifest.json

{ 
    "name": "Test", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "The first extension that I made.", 
    "browser_action": { 
    "default_popup": "popup.html" 
    }, 
    "permissions": ["webRequest", "webRequestBlocking", 
        "http://www.altavista.com/*", 
        "http://*.google.com/*", 
        "https://*.google.com/*"] 
} 

回答

1

你要添加的協議。 www.altavista.com解析爲chrome-extension://..../www.altavista.com。使用http://www.altavista.com應該可以解決您的問題。

+0

Rob W, 您的意思是使用 'FindData(「http://www.altavista.com」);' 這也行不通。 – brunossilva

+0

@brunossilva我已經創建了基於您的代碼的演示擴展,並且按預期工作。我假設你想在擴展的生命週期中永久地捕獲所有的谷歌訪問。調整:1.我已將代碼複製粘貼到名爲'background.js'的文件中。在清單中,我使用'「background」引用該文件:{「scripts」:[「background.js」]}'。 2.我刪除了「我知道我不需要這個」 - 如果是塊。它的作品:[background.js](http://pastebin.com/ut5z00d1),[manifest.json](http://pastebin.com/v0NKSMJK)。 –

+0

當http:// www.google.com /'重定向到例如'http:// www.google.nl /',因爲你沒有聲明訪問清單文件中其他域的權限。確保你檢查了這一點。 –