首先,我知道这个问题:
,特别是其中的最佳答案,http://emilsblog.lerch.org/2009/07/javascript-hacks-using-xhr-to-load.html。
因此,使用Firefox(以及更高版本的Chrome实际上似乎也可以使用的操作系统)从Javascript访问二进制数据;不了解Opera。到现在为止还挺好。 但我仍然希望找到一种方法来使用现代IE(理想情况下是IE 6,但至少是IE 7+)访问二进制数据,而不使用VB。 有人提到XHR.messageBody不起作用(如果它包含零字节),但我想知道这是否可以用更新版本解决;或者是否有可能允许简单二进制数据访问的备用设置。
对我来说,具体用例是访问使用二进制数据传输格式编码的Web服务返回的数据(包括UTF-8编码中不合法的字节组合)。
答案 0 :(得分:3)
好的,我找到了一些有趣的线索,虽然还不是完全好的解决方案。
我尝试过的一个显而易见的事情就是玩编码。有两件显而易见的事情确实应该有效:
然而:似乎拉丁语-1的转换似乎是可逆的,如果是这样,我打赌我毕竟可以使用它。所有突变都是从1字节(0x00 - 0xFF)到大于字节的值,并且至少对于Firefox没有不明确的映射。如果这适用于其他浏览器,则可以将值映射回来并消除自动转码的不良影响。然后这将适用于多个浏览器,包括IE(需要一些特殊的处理空值的警告)。
最后,一些用于转换数据类型的有用链接是:
答案 1 :(得分:3)
可以使用IE10,使用responseType = arraybuffer或blob。你只需要等待几年......
http://msdn.microsoft.com/en-us/library/ie/br212474%28v=vs.94%29.aspx
http://msdn.microsoft.com/en-us/library/ie/hh673569%28v=vs.85%29.aspx
答案 2 :(得分:2)
您可以使用JScript“VBArray”对象在IE中获取这些字节(不使用VBScript):
var data = new VBArray(xhr.responseBody).toArray();
答案 3 :(得分:1)
我认为答案显然是“不”,根据这篇文章:how do I access XHR responseBody (for binary data) from Javascript in IE?
(或:“使用VBScript帮助”)