XMLHttpRequest for JSON文件在Chrome中完美运行,但在Firefox中无法运行

gil*_*ain 7 javascript firefox json google-chrome userscripts

我已将问题区域缩小到以下功能.这是我写的用户脚本的一部分.它在Chrome中完美运行,但在Firefox/Greasemonkey中根本不起作用.我整天都在修补它并撞到了一堵砖墙.唯一有意义的是,如果JSON.parse不能正常工作,这是有道理的,因为已知Chrome处理JSON.parse有点不同......但我知道JSON完美形成!

function getTagline() {
    var jsonfile = new XMLHttpRequest();
    jsonfile.open("GET", "http://example.com/somegood.json", true);
    jsonfile.onreadystatechange = function() {
        if (jsonfile.readyState == 4) {
            if (jsonfile.status == 200) {
                var taglines = JSON.parse(jsonfile.responseText);
                var choose = Math.floor(Math.random() * taglines.length);
                var tagline = document.createTextNode(taglines[choose].metais);
                insertTagline(tagline);
            }
        }
    };
    jsonfile.send(null);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

gil*_*ain 1

经过更多排查后,发现这是一个跨域 XHR 问题。它可以在 Chrome 中运行,因为默认情况下,Chrome 允许在所有域上使用该脚本。我调整了标头,这样 Chrome 就知道只允许正确的域,但 Firefox 无论如何都不允许 XHR 上的跨域。只需切换到 GM_xmlhttpRequest 即可解决此问题,该请求允许 Firefox 中的跨域,值得庆幸的是,Chrome 也支持跨域。

感谢各位的帮助!