ChromeでsendAsBinaryを使う
sendAsBinaryは現在のところ、Firefoxの独自機能で、他のブラウザでは動作しません。
ですが、Chromeに関して言えば、同様の処理をできることが分かったので、記しておきます。
これを利用すれば、確かにChromeでもXMLHttpRequest.sendAsBinaryが動きました!
しかし、この例では、XMLHttpRequestを継承してsendAsBinaryのオーバーライドを行っていますので、これをそのまま使うとFirefoxで動かなくなってしまいます。
これは、ユーザーエージェントを調べて、ブラウザがChromeの場合のみsendAsBinaryを追加することにすれば解決しそうです。
if (window.navigator.userAgent.toLowerCase().indexOf(“chrome”) > -1) {
XMLHttpRequest.prototype.sendAsBinary = function(datastr){
function byteValue(x){
return x.charCodeAt(0) & 0xff;
}
var ords = Array.prototype.map.call(datastr, byteValue);
var ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}
他のブラウザでも使えると良いのだけれど・・・。
コメント