関数を呼び出して JavaScript ドキュメント オブジェクトを作成または再作成する方法はありますか。何かのようなもの
<script type="javascript/text">
var document = createDocument("some html");
</script>
私はこれをやりたいので、この質問の問題を解決できますクライアント側xslt with javascript in firefox
関数を呼び出して JavaScript ドキュメント オブジェクトを作成または再作成する方法はありますか。何かのようなもの
<script type="javascript/text">
var document = createDocument("some html");
</script>
私はこれをやりたいので、この質問の問題を解決できますクライアント側xslt with javascript in firefox
Webkitは、そのタスクに次のメソッドを最初に組み込んだり公開したりしました。
document.implementation.createHTMLDocument(title);
Firefoxはバージョン4からもこのメソッドを実装していますが、以前のバージョンでは、以下を使用してHTMLドキュメントを作成できます。
var doc = document.implementation.createDocument('', '',
document.implementation.createDocumentType('html', '', ''));
<!DOCTYPE html>
これは、 (HTML5)を持つドキュメントとほぼ同等である必要があります。
'createDocumentType'の空の文字列を必要なpublicId/systemIdに置き換えます。
DOMを機能させるには、結果のドキュメントにhtml、head、body要素を作成/追加する必要があります。
を使用してみてくださいdocument.implementation.createDocument
。ドキュメントを作成したら、innerHTML
プロパティを使用して HTML を設定できます。きちんとした小さなパッケージに包みたい場合は、次のようにすることができます。
function createDocument(html) {
var doc = document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'html', null);
doc.documentElement.innerHTML = html;
return doc;
}
そして、次のように関数を使用します。
var doc = createDocument("<body><span>Hello StackOverflow.com!</span></body>");
これがあなたが探していたものかどうか教えてください。
createDocument(...) で解析エラーが発生する場合は、代わりに createHTMLDocument() を使用するように Dan の回答を調整します。
function createDocument(html, title) {
var doc = document.implementation.createHTMLDocument(title)
doc.documentElement.innerHTML = html
return doc
}
使用:
var doc = createDocument('<!DOCTYPE html><html>'
+ '<head><script src="foo.js"></script></head>'
+ '<body></body></html>', 'test')
console.log(doc.getElementsByTagName('script'))
出力:
[script foo.js]
ドキュメント (iframe など) を再作成する場合は、次の方法で行うことができます...
document.open();
document.write('<html><head></head><body>some stuff</body></html>');
document.close();
これを使用して、動的に作成された iframe のドキュメントを再作成する方法を次に示します。
var iframe = document.createElement('iframe'),
iframeDoc = (iframe.contentDocument)
? iframe.contentDocument : iframe.contentWindow.document;
document.getElementById('iframeContainer').appendChild(iframe);
iframeDoc.open();
iframeDoc.write('<html><head></head><body>howdy</body></html>');
iframeDoc.close();
これは Firefox で動作します:
document.implementation.createDocument(null, "rootElement", null)
HTMLDocument (ドキュメント自体など) ではなく、XMLDocument が提供されることに注意してください。