ここに記載されている方法(https://stackoverflow.com/a/10433550/556079)を使用して、別のURLから読み込むのではなく、与えたHTMLを読み込むiframeを作成しています。ロードしたいHTMLは、現在のページのDOM全体です(基本的にはそれを反映しています)。現在のページのDOMを変数にロードし、それをJavaScriptでiframeに書き込むにはどうすればよいですか?
上記のリンク先のコードは次のとおりです。これは、iframeにもっと多くのHTMLを必要とすることを除いて、完全に動作します。
var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();
ご覧のとおり、<body>Foo</body>
はiframeにロードされています。私はやってみた:var html = document;
しかし、これは動作しませんでした。
このコードはChrome拡張機能で使用されているため、Chromeで動作させる必要があります。これを行うための私の推論は、私はiframeのコードを操作したいです。残念ながら、Chromeではローカルページ間での会話は許可されず、ローカルページではこのChrome拡張機能を使用しています。
アイデア?
ソースにある文字通りすべてのものを取得するにはどんな方法でも、それを自分で追加しなくても、doctypeとhead? – jkupczak
@jimmykup:上記は、 'head'を取得する方法を説明しています。あなたは 'document.doctype'からdoctypeを得ることができます。 (私は上記を更新しました) –
私はいくつかの検索を行い、 'document.documentElement.outerHTML'が' head'と 'body'を同時に取得し、' 'タグを取得していることがわかりました。しかし、 'document.doctype'はiframeに' [object DocumentType] 'を返します。どのようにその固定を得るための任意のアイデア? – jkupczak