ChromeでXMLHttpRequest.sendAsBinaryを使えるようにする

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);
    }
}

他のブラウザでも使えると良いのだけれど・・・。

コメント

タイトルとURLをコピーしました