繁体   English   中英

尝试通过Chrome扩展js脚本使用MediaWiki API时,为什么会得到空值?

[英]Why am I getting null value when trying to use the mediawiki api from a chrome extension js script?

我正在构建的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);
    req.send;
}    

我有两个问题。

首先是响应事件。 不知道我该放在哪里。

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

在发送请求的函数之后的某个地方,是在内部还是其他地方?

第二个更重要的问题/问题是,当我尝试访问响应时,我得到空值。

我试图按照类似问题中所述将格式切换为JSON,但这是行不通的。 还尝试了同步请求,但仍然获得空值。

有任何想法吗? 这与扩展的安全性限制有关,还是与我的代码有问题有关?

在我看来,这是一个同源问题。 根据文档 ,内容脚本不支持跨域XHR。 建议用户创建一个后台页面,在清单中声明所涉及站点的跨域权限(在本例中为http://en.wikipedia.org ),然后使用消息传递在内容脚本和后台页面之间进行通信。

提供了此技术示例 (带有源代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM