Я пишу расширение (мое первое желание, также я не очень хорошо разбираюсь в JS, на самом деле это мой первый проект на языке).И у меня возникают проблемы при получении URL-адреса с использованием XHR страницы Backgroud.
Я получаю код состояния 0, и в запросе нет данных.Странно то, что когда я использую Wireshark (для прослушивания пакетов, отправленных Chrome), я получаю данные в порядке и с кодом состояния 200. Ниже вы видите мой файл манифеста и код.Я в основном скопировал код из ссылки на страницу документации сценария содержимого:
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/
Я читал, что иногда это происходит, когда вы не указываете в файле manifest.json разрешения, но ядумаю, что они в порядке.Заранее спасибо.
Вот манифест:
Manifest.json
{
"name": "XXXXX",
"version": "0.1",
"description": "test extension",
"browser_action": {
"default_icon": "icon.png",
"popup": "popup.html"
},
"content_scripts": [
{
"matches": ["http://*.amazon.com/*"],
"js": ["jquery.js", "content.js"]
}
],
"background_page": "background.html",
"permissions": [
"tabs",
"http://finance.yahoo.com/*",
"http://*.amazon.com/"
]
}
background.html
function fetchCurrency(callback) {
var invocation = new XMLHttpRequest();
var url = 'http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s=USDCOP=X';
invocation.onreadystatechange = function(data) {
alert('Invocation Ready State: ' +invocation.readyState);
if (invocation.readyState == 4) {
alert('Invocation Status: ' + invocation.status); //shows 0!!
if (invocation.status == 200 ) {
var data = invocation.responseText;
alert('The data es ' + data);
callback(data);
} else {
callback(null);
}
}
}
invocation.open('GET', url, true);
invocation.send();
};
function onRequest(request, sender, callback) {
if (request.action == 'getRate') {
fetchCurrency(callback);
}
};
// Wire up the listener.
chrome.extension.onRequest.addListener(onRequest);
/*
I then connect the content script as exemplified in the link I
posted. All is working OK but I am getting a weird 0 status code :'(
*/