このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
XMLHttpRequest における HTML の扱い
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
W3C のXMLHttpRequest 仕様書では、もともとXML の解釈しか対応していなかったXMLHttpRequest にHTML の解釈を追加しています。この機能によって、ウェブアプリはXMLHttpRequest を使って HTML を解釈済のDOM として取得することができます。
一般的なXMLHttpRequest の使い方についての概要は、XMLHttpRequest の利用をお読みください。
In this article
制限
同期的なXMLHttpRequest の利用を避けるために、 HTML 対応は同期モードでは利用できません。また、 HTML 対応はresponseType プロパティが"document" に設定されている時にのみ有効です。この制限によって、古いコードがXMLHttpRequest を使ってresponseText がtext/html であるリソースを既定のモードで受け取るときに、無用に HTML を解釈する時間を浪費することを防ぎます。また、この制限によって HTTP のエラーページ (ふつうはtext/html の応答本文を持つ) の際にresponseXML がnull と想定する古いコードで問題が発生することを防ぐこともできます。
使用方法
XMLHttpRequest を使って HTML リソースを DOM として取得することは、XMLHttpRequest を使って XML リソースを DOM として取得するのと似ていますが、同期モードを使用することはできず、XMLHttpRequest オブジェクトのopen() を呼び出した後、send() を呼び出す前に、responseType プロパティに文字列"document" 代入して、明示的に文書を要求する必要があるという点が異なります。
const xhr = new XMLHttpRequest();xhr.onload = () => { console.log(xhr.responseXML.title);};xhr.open("GET", "file.html");xhr.responseType = "document";xhr.send();文字エンコーディング
HTTP のContent-Type ヘッダーで文字エンコーディングが宣言されている場合は、そのエンコーディングが使用されます。そうでない場合、もしバイトオーダーマークがある場合は、そのバイトオーダーマークが示すエンコーディングを使用します。そうでない場合、もしファイルの先頭 1024 バイト以内にエンコーディングを宣言する<meta> 要素がある場合は、そのエンコーディングが使用されます。それもない場合、ファイルは UTF-8 としてデコードされます。
仕様書
| Specification |
|---|
| XMLHttpRequest> # interface-xmlhttprequest> |