Firefox似乎是唯一在执行同步请求时不会抛出错误的浏览器,您知道为什么吗?
// Make sure to have your JS console open when you run this
var url = '//api.soundcloud.com/resolve.json?url=http://soundcloud.com/matas/hobnotropic&client_id=83f67039ae0c3790030d256cb9029678';
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false); // SYNCHRONOUS
xhr.onload = alert.bind(null, 'Loaded');
xhr.send(null);
执行几乎相同的异步XMLHttpRequest不会导致错误,请求也不会像预期的那样完成:
// Make sure to have your JS console open when you run this
var url = '//api.soundcloud.com/resolve.json?url=http://soundcloud.com/matas/hobnotropic&client_id=83f67039ae0c3790030d256cb9029678';
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true); // ASYNCHRONOUS
xhr.onload = alert.bind(null, 'Loaded');
xhr.send(null);
据我所知:
http://api.soundcloud.com/tracks/49931.json
的302重定向。
有人能解释一下同步请求失败的原因吗?为什么它会出现如此奇怪的错误,特别是在异步执行相同请求的情况下?为什么这个参数会有区别呢?它是Firefox还是WebKit/Blink中的一个已知的bug?
编辑:我有在Chrome的bug追踪器上打开一个新的问题,因为还没有人能够指出规范中任何能正确解释这种行为的东西。当我有机会的时候,我可能会为WebKit打开一个类似的问题。
发布于 2013-12-08 13:21:06
这似乎是为了阻止使用同步请求而故意作出的选择:
据我所能看到的是,我似乎从来没有支持它在第一。
https://stackoverflow.com/questions/20224883
复制相似问题