XMLHttpRequestのHTMLサポート (responseType='document')
XHR2改めXHRではresponseType = 'document'
でHTML文書を返してくれる。で、Firefox 11, Chrome 18, Safari 6から使えるようになっている。
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'
としてサポートされてて、Fx10で接頭辞が外れたらしい)。
OperaはPresto 2.10.256で実装済らしいけど、一番新しいOpera Nextが255だったので確認できず。2.10.269なスナップショットが出た!うごいた!
そしてIE10はどうなんだろう。BlobはサポートされてるけれどArrayBufferやらが書かれてないから、厳しいかなあ。
む、'ms-stream'
なんてあるんだ…。
追記 (2013-08-26): Blink (M31)でサポートされた。Operaもこれで後退したのが元通りに。
追記 (2013-09-22): WebKitでもサポートされた。
追記 (2012-08-16): IE10のresponseType
リソース発見。
responseType='document'
, responseType='arraybuffer'
もサポートされているみたい。responseType='json'
はない。でも、JSON.parse()
すればいいだけの話でもあるので、そんな残念でもないか。