XHRまわりのメモ

体調不良

で、会社を午後半休して家で寝たら治った感じなので深夜何かやっているわけですが。

Chrome で sendAsBinary

sendAsBinary はFirefoxが実装しているXmlHttpRequestのバイナリ形式送信だけど、
これをChromeが実装していないので(IE?なにそれ)、Chrome対応させる。
すでに先人達が突っ込んでいっている。

http://code.google.com/p/chromium/issues/detail?id=35705

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

XMLHttpRequest のoverrideで行けるのでchrome判定さえすればいけそう。

overrideMimeType

XHRでsjisとかを取得したい時はこれで。

var xhr = new XMLHttpRequest();
xhr.overrideMimeType("text/plain; charset=shift_jis");

ここも参考 http://d.hatena.ne.jp/ASnoKaze/20110530/1306720270