0

私はあなたがjQueryでこのようなことをするinnerHTMLを得ることができることを知っています、

$('iframe').load(function(){
  alert($(this).contents().find('body').html());
});

これにより、bodyタグのinnerHTMLが取得されます。しかし、私はそれをすべて望んでいます。HTMLタグとDoctypeが必要です。基本的にソースコード全体。そして、全体としても編集できるようにしたいと思います。「全体として」とは、こういうことができるようになりたいという意味です。

$('iframe').html('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>title</title>
</head>
<body>
hello world
</body>
</html>');

どうすればよいですか?

注:DOMはブラウザーによって処理が異なるため、OperaのinnerHTMLはFirefoxのinnerHTMLとは異なって見えることに気づきました。しかし、それは大したことではありません。

4

2 に答える 2

0

アクセスしているこのドキュメントは同じサーバー上にあると思いますか?明らかに、別のWebサイトのコンテンツにアクセス(および編集)できることは非常に危険です。

$('iframe').contentWindow.document.documentElement.outerHTML完全なhtmlタグとその内容が含まれます。outerHTMLは正確にはクロスブラウザではないため、代わりにdocumentElementオブジェクトの属性を解析することをお勧めします。(少なくともWebKitでは)outerHTMLを編集できないため、innerHTMLを使用してコンテンツを編集できることに注意してください。

$('iframe').contentWindow.document.doctypeDOCTYPEを表します。実際のタグを取得することはできませんが、その属性から情報を取得することはできます。これが! DOCTYPE要素のMSDNリファレンスです。

于 2009-09-02T02:03:12.393 に答える
0

document.writeあなたの友達です。

例えば:

var iframeEl = document.createElement('iframe');
document.body.appendChild(iframeEl);

var oFrame = window.frames[window.frames.length - 1];
oFrame.document.write('<html><head><title>foo</title></head><body>bar</body></html>');

oFrame.document.body.innerHTML; // "bar"
于 2009-09-02T02:34:15.170 に答える