Javascript 为什么我在尝试从chrome扩展js脚本使用mediawiki api时得到空值?
在我正在构建的chrome扩展中有一个javascript脚本。它是内容脚本 该脚本正在使用mediawiki api:Javascript 为什么我在尝试从chrome扩展js脚本使用mediawiki api时得到空值?,javascript,api,mediawiki,google-chrome-extension,Javascript,Api,Mediawiki,Google Chrome Extension,在我正在构建的chrome扩展中有一个javascript脚本。它是内容脚本 该脚本正在使用mediawiki api: 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); r
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,但没有成功。还尝试了同步请求,但仍然得到空值
有什么想法吗?这是否与扩展的安全限制有关,或者只是我的代码有问题?对我来说,这似乎是一个相同的问题。根据,内容脚本不支持跨域XHR。建议用户创建背景页面,声明对相关站点的跨源权限(在本例中为
http://en.wikipedia.org
),然后使用在内容脚本和后台页面之间进行通信
有一个(带有源代码)可用。是的,你说得对。我将它从background.html改为work,并用代码交换消息,它就工作了。谢谢