2

現在、私はこれをやっています:

var newdoc = document.implementation.createHTMLDocument("Wrong title");
newdoc.open();
newdoc.write('<!doctype html><html><head><title>Right title</title></head><body><div id="a_div">Right content</div></body></html>');
newdoc.close();

次に、読み込まれたドキュメントに関する情報を取得しようとします。たとえば、次のようになります。

> newdoc.title
Right title
> newdoc.getElementById("a_div").innerHTML
Right content

問題は、Chrome でしか機能しないことです。Firefox と Opera では、ドキュメントを閉じた後に DOM がロードされていないようです。私は何を間違っていますか?

問題を示すために、この小さなフィドルを書きました: http://jsfiddle.net/uHz2m/

4

1 に答える 1

1

createHTMLDocument()さて、ドキュメントを読んだ後、長さがゼロのドキュメント オブジェクトを作成するのではなく、次のような基本的な HTML スキャフォールディングを作成することに気付きました。

<!DOCTYPE html>
<html>
  <head>
    <title>Wrong title</title>
  </head>
  <body></body>
</html>

そのためnewdoc.write()、期待どおりに動作しません。

代わりに、html要素を取得してその HTML コードを変更するだけです (修正されたフィドル)。

var newdoc = document.implementation.createHTMLDocument("Wrong title");
newdoc.documentElement.innerHTML = '\
   <!doctype html>\
   <html>\
     <head>\
       <title>Right title</title>\
     </head>\
     <body>\
       <div id="a_div">Right content</div>\
     </body>\
   </html>';
于 2014-03-25T20:06:09.837 に答える