1

Я пытаюсь использовать расширение Chrome для получения контента сайта при просмотре другого сайта. Я называю «XMLHttpRequest» в возникновении chrome.webRequest.onCompleted Но всякий раз, когда я вызываю метод XHR.Open, получаем следующую ошибку: [Исключение: DOMException] в полях Status и StatusText из объекта XHR.Chrome Extensions: 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 Я создал демо-расширение, основанное на вашем коде, и работает как и ожидалось. Я предположил, что вы хотите навсегда поймать все посещения Google в течение срока службы расширения. Корректировки: 1. Я скопировал код в файл под именем 'background.js'. В манифесте я ссылался на этот файл, используя «фон»: {«scripts»: ["background.js"]} '. 2. Я удалил «Я знаю, что мне не нужен этот» -if-block. Он работает: [background.js] (http://pastebin.com/ut5z00d1), [manifest.json] (http://pastebin.com/v0NKSMJK). –

+0

Ваш текущий код может не работать, когда 'http: // www.google.com/' перенаправляет, например. 'http: // www.google.nl /', потому что вы не объявили разрешение на доступ к другому домену в файле манифеста. Убедитесь, что вы это проверите. –

Смежные вопросы