2010-10-29 1 views
0

У меня есть сценарий javascript в расширении chrome, которое я строю. Это скрипт контента.Почему я получаю нулевое значение при попытке использовать mediawiki api из сценария js-расширения chrome?

Скрипт использует Mediawiki апи:

function wikifind(str) 
{ 
    var req = new XMLHttpRequest(); 
    url = "http://en.wikipedia.org/w/api.php?action=query&format=xml&titles="+str; 
    req.open("GET", url, true); 
    req.send; 
}  

У меня есть два вопроса.

Первое Событие ответа. не уверен, где я должен это положить.

req.onreadystatechange=function() 
{ 
    if (req.readyState==4 && req.status==200) 
    { 
     document.write(req.responseXML); 
    } 
} 

Где-то после функции, которая отправляет запрос, внутри или иным образом?

Второй важный вопрос/проблема заключается в том, что когда я пытаюсь получить доступ к ответу, я получаю нулевое значение.

Я попытался переключить формат на JSON, как было сказано в аналогичном вопросе, но это не сработало. Также судимые синхронные запросы, но все равно получающие нулевое значение.

Любые идеи? Имеет ли это какое-либо отношение к ограничениям безопасности расширений или просто проблемам с моим кодом?

ответ

0

Это похоже на проблему с одним и тем же происхождением. Согласно the documentation, междоменное XHR не поддерживается в сценариях контента. Пользователям рекомендуется создать справочную страницу, объявить разрешения перекрестного происхождения на рассматриваемый сайт (в данном случае http://en.wikipedia.org) в манифесте, а затем установить связь между сценарием контента и фоновой страницей с помощью message passing.

Доступен example of this technique (с исходным кодом).

+0

Да, вы правы. Я изменил его, чтобы работать с background.html и обмениваться сообщениями с кодом, и он работает. благодаря – Uri