0

有没有办法处理来自 Chrome 扩展的 AJAX Origin 错误?

拒绝加载 chrome-extension://kldbdjcbjohfhddpicldkbifbkcdanid/data.json。资源必须列在 web_accessible_resources 清单键中,才能被扩展之外的页面加载。

我试过这个:

$.ajax({
    url: 'chrome-extension://kldbdjcbjohfhddpicldkbifbkcdanid/data.json',
    datatype: 'json',
    success: function(xhr) {
        alert('ok');
    },
   erro r: function(xhr, status, err) {
        alert('status: ' + xhr.status + ' - ' + err);
    }
});

但在变量中什么也没有。错误状态为“0”,错误消息为空。

4

2 回答 2

0

听起来您正在尝试根据错误从内容脚本加载此资源。

您必须在清单中通过web_accessible_resources. 您的错误消息指出这是解决方案。

完成此操作后,您可以使用chrome.extension.getURL(resourcePath).

这是我的清单的摘录:

"web_accessible_resources" : [
    "*.html"
]

这是我用来请求我的 HTML 模板文件的代码:

var url = chrome.extension.getURL("template.html");
$.get(url,function(data, textStatus, jqXHR){
    console.log("Got the template!");
    console.log(data);
},"html");
于 2014-03-11T11:37:32.843 回答
0

您可以尝试使用 jsonp 格式。这通常会绕过跨域错误。

$.ajax({
    url: 'chrome-extension://kldbdjcbjohfhddpicldkbifbkcdanid/data.json',
    datatype: 'jsonp',
    success: function(xhr) {
        alert('ok');
    },
   erro r: function(xhr, status, err) {
        alert('status: ' + xhr.status + ' - ' + err);
    }
});
于 2013-02-05T21:39:21.480 回答