Я пытаюсь использовать расширение 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/*"]
}
Rob W, Вы хотите использовать 'FindData (« http://www.altavista.com »);' Это тоже не сработало. – brunossilva
@brunossilva Я создал демо-расширение, основанное на вашем коде, и работает как и ожидалось. Я предположил, что вы хотите навсегда поймать все посещения Google в течение срока службы расширения. Корректировки: 1. Я скопировал код в файл под именем 'background.js'. В манифесте я ссылался на этот файл, используя «фон»: {«scripts»: ["background.js"]} '. 2. Я удалил «Я знаю, что мне не нужен этот» -if-block. Он работает: [background.js] (http://pastebin.com/ut5z00d1), [manifest.json] (http://pastebin.com/v0NKSMJK). –
Ваш текущий код может не работать, когда 'http: // www.google.com/' перенаправляет, например. 'http: // www.google.nl /', потому что вы не объявили разрешение на доступ к другому домену в файле манифеста. Убедитесь, что вы это проверите. –