2012-02-16

XMLHttpRequestのHTMLサポート (responseType='document')

XHR2改めXHRではresponseType = 'document'でHTML文書を返してくれる。で、Fx11, Cr18から使えるようになっている。

var xhr = new XMLHttpRequest();
xhr.onload = function () {
    console.log(this.response instanceof HTMLDocument);
}
xhr.open('GET', 'foo.html');
xhr.responseType = 'document';
xhr.send();

こんなんでいいのかな…。ええと、responseをinspectしてみてください。

responseXMLもHTMLを返すから奇々怪々な感じではあるけれど、そんなこと言うとオブジェクトの名前からつっこまないといけないので、ぐっとこらえて。

というわけでMDNでそれについて書いてる記事を訳しました。

原文では最後にresponseTextで読んだものを正規表現で処理するってセクションがあるんだけど、それは記事のスコープ外なんじゃと思ったので英語のまま。タイトル的にはあってもいいのかもしれないけど…。あったんだけど案の定削除された

responseType='json'

あ、そういえば仕様にはresponseType = 'json'JSON.parseしたオブジェクトが返ってくる機能もはいってる。こっちは12月に仕様に追加されたばっかりだけど、すでにFx10で対応してるらしい。(もともとFx9で'moz-json'としてサポートされてて、10で接頭辞が外れたらしい)。

OperaPresto 2.10.256で実装済らしいけど、一番新しいOpera Nextが255だったので確認できず。2.10.269なスナップショットが出た!うごいた!

いっぽうWebKitはまだ実装中

そしてIE10はどうなんだろう。BlobはサポートされてるけれどArrayBufferやらはないから、厳しいかなあ。
む、'ms-stream'なんてあるんだ…。