リモート サーバーから受け取った HTML コードを特権ドキュメントに直接挿入しないことをお勧めします。これはセキュリティ上の脆弱性です。サーバーを制御していて、サーバーがハッキングされることはないと確信している場合でも、途中でデータが変更されている可能性があります。innerHTML を使用すると、HTML コードと一緒に送信された JavaScript コードを実行でき、その JavaScript コードは拡張機能の特権で実行されます (つまり、ほとんど何でも実行できます)。
代わりに を作成し、<iframe>
ドキュメントとそのフレームの間にセキュリティ境界があることを確認する必要があります (type="content" がそれを行います)。このようなもの:
var myHTML = XHR.responseText;
var tempFrame = document.createElement("iframe");
tempFrame.setAttribute("type", "content");
tempFrame.setAttribute("src", "data:text/html;charset=utf-8," + encodeURIComponent());
document.documentElement.appendChild(tempFrame);
tempFrame.contentWindow.addEventListener("load", function()
{
tempFrame.contentDocument.documentElement;
tempFrame.contentDocument.getElementsByTagName('a');
...
tempFrame.parentNode.removeChild(tempFrame);
}, false);
もちろん、整形式の XML があれば、作業はより簡単になります。次に、それを解析することは、単に次の問題です。
var doc = new DOMParser().parseFromString(XHR.responseText, "text/xml");
doc.documentElement;
doc.getElementsByTagName('a');
編集:これを書いた後、状況が変わりました-Firefox 10以降、DOMParser()
整形式ではないHTMLコードにも使用できます。したがって、HTML コードからデータを抽出する必要があるだけの場合は、フレームではなくparseFromString(..., "text/html")
.