使用Safari扩展加载本地JSON文件

时间:2015-10-19 06:25:19

标签: xmlhttprequest safari-extension

尝试使用Safari扩展程序加载JSON文件。

var xhr = new XMLHttpRequest();
xhr.open("GET", safari.extension.baseURI +'js/data.json', true);

它出现错误" 仅支持HTTP的跨源请求。"

例如,可以使用Chrome Extenison

var xhr = new XMLHttpRequest();
xhr.open("GET", chrome.extension.getURL('/js/data.json'), true);

您需要在清单

中指定它
"web_accessible_resources": ["/js/data.json"]

Safari中是否有类似的方式?

修改 找到解决方案

可以通过全局页面

global.html

function handleMessage(event) {
    if (event.name === "requestParagraphs") {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", safari.extension.baseURI + 'js/data.json', true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                var articlesJSON = JSON.parse(xhr.responseText);
                event.target.page.dispatchMessage('paragraphs', articlesJSON);
            }
        };
        xhr.send();
    }

}
safari.application.addEventListener("message", handleMessage, false);

injected.js

function handleMessage(msgEvent) {
        var messageName = msgEvent.name;
        var messageData = msgEvent.message;
        if (messageName === "paragraphs") {
           // ...
        }
}
    safari.self.addEventListener("message", handleMessage, false); // Listen response
    safari.self.tab.dispatchMessage('requestParagraphs'); // Call global page

0 个答案:

没有答案