2009-06-27 12 views
9

関数を呼び出すことによってjavascriptドキュメントオブジェクトを作成または再作成する方法はありますか。javascriptドキュメントを作成するオブジェクト

<script type="javascript/text"> 
    var document = createDocument("some html"); 
</script> 

ような何か、私はこれをしたいので、私はあなたがdocument.implementation.createDocumentを使用して試みることができるこの質問にclient side xslt with javascript in firefox

+0

@PaulRoubこの質問および関連する回答は2011年9月であり、複製は2011年11月の別の質問です。複製は出版日、古いものは元です、修正してください。 –

答えて

5

を問題を解決することができます。ドキュメントを取得したら、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>"); 

が、これは何であるならば、私に教えてください探していた

1

これはFirefoxで動作します。

document.implementation.createDocument(null, "rootElement", null) 

それはあなたのXMLDocumentを与えることに注意してください、というよりも(文書そのもののような)のHTMLDocumentを。

2

あなたがここに...

document.open(); 
document.write('<html><head></head><body>some stuff</body></html>'); 
document.close(); 

でそうすることができる(例えばIFRAMEのように)文書を再作成するために探している場合は、動的に作成の文書を再作成するためにそれを使用することができる方法であります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(); 
11

WebKitがそのタスクのために、以下のメソッドを公開/含む最初た:

​​

以前のバージョンのために、HTMLを作成することが可能であるが、バージョン4からFirefoxは、このメソッドを実装以下使用してドキュメント:<!DOCTYPE html>(HTML5)を有するドキュメントとほぼ同じであるべきである

var doc = document.implementation.createDocument('', '', 
    document.implementation.createDocumentType('html', '', '')); 

'createDocumentType'の空の文字列を、必要なpublicId/systemIdに置き換えます。

動作するDOMを持つために、生成されるドキュメントにhtml、headおよびbody要素を追加/追加する必要があります。

+0

OKですが、 'document'が未定義の場合はどうなりますか? _ex nihilo_を作成する方法はありますか?確かにコンストラクタ関数が必要ですか? – Lori

+1

@ user1269964次に、 'document.implementation'の代わりに' DOMImplementation'を使います。 https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation – m93a

+1

**編集:**申し訳ありません。 'DOMImplementation'ではなく'(new Document())。implementation'です。 – m93a

1

のcreateDocument(...)があなたの代わりに)、エラーを解析createHTMLDocumentを(使用するダンの答えを適応与えた場合:

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] 
関連する問題