Получение кода состояния 0 и пустых данных при выполнении некоторого XHR на фоновой странице расширения Chrome - PullRequest
0 голосов
/ 12 мая 2011

Я пишу расширение (мое первое желание, также я не очень хорошо разбираюсь в 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 :'(
*/

1 Ответ

1 голос
/ 12 мая 2011

Попробуйте вместо этого в своем манифесте:

"http://*.finance.yahoo.com/*"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...