iframe を自由に操作できたらいいのに、と思ったことがある人は多いでしょう。このようにして、静的ページは、バックグラウンドの動的ページ php、jsp、および asp を含めて要求するのと同等の、統合されたマルチページ レイアウトを実装する機能を備えています。
Javascript を使用すると、iframe オブジェクト属性 src が指す HTML ページのコンテンツを背景のように動的にロードできます。このような操作では 2 つのページを提供する必要があります。1 つのページは iframe が配置されているページ (ページ名: iPage.html )、もう 1 つのページは iframe 属性 src によってポイントされるページ (ページ名: srcPage.html ) です。
iPage.html、<body> の dom:
,<body>in
上記の 2 つのページを IE 上で JS で操作する方法について説明します。 Firefox の方法について説明し、最後に IE と Firefox との互換性について説明します。 ブラウザーが iframe オブジェクトを操作する方法。
iframe が非標準の HTML タグであることは誰もが知っています。これは、IE ブラウザによって起動されるマルチレイアウト タグです。その後、Mozilla もこのタグをサポートしました。 (冗談です、ふふ)
1. IE は document.frames["IframeName"] を通じて取得します。 例:に出力します。 JS は次のようになります。
ページにコードを追加しても、期待した内容が出力されないことがわかります。なぜでしょうか?私はこれをまだ理解していません。ただ習慣的に window.onload を追加すると、出力が表示されます (注: このイベントには JS コードが書き込まれています)。変更後、IE ではコードが出力されましたが、Firefox では document.frames が定義されていません。エラー メッセージ:
2.
このメソッドは ie6、ie7、firefox2.0、および firefox3.0 のテストに合格しました。おいおい。 (ネットで調べたところ、Mozilla Firefox の iframe.contentWindow.focus に、スクリプトインジェクション攻撃の危険性があるバッファオーバーフローの脆弱性が見つかりました。
後でバックグラウンドで防ぐことができると聞き、安心しました。しかし、それでもFirefox の新しいバージョンがそれを解決できることを願っています。)
3. srcPage.html の h1 タイトル
contentWindow からアクセスします。ノードは以前と同じです。
は、 IFrameElmRef.contentDocumentを介して iframe のドキュメント オブジェクトにアクセスするための W3C 標準をサポートしています。これにより、コード
これら 2 つのブラウザと互換性のあるメソッド、contentWindow メソッドを使用できるようになりました。
おいおい! iframe を自由に操作できますか?それでも不快な場合は、iframe 内のコンテンツを書き換えることもできます。
designMode (ドキュメントを編集可能なデザイン モードに設定する) および contentEditable (コンテンツを編集可能に設定する) を通じて、iframe のコンテンツを書き換えることができます。コード:
、http: //msdn.microsoft.com/en-を参照してください
。us/library/ms533720(VS.85).aspx
firebug は、図に示すように、上記のコードのパフォーマンスをテストします。
次のように
iObj.document.designMode = 'On';
iObj.document.contentEditable = true
をコメントアウトします。効果は変わらず、時間効率はアノテーション前の3倍近くになりました。おいおい。これら 2 つのオブジェクトは、インターネット上の一部の人々の iframe 内のコンテンツを書き換えるメソッドを参照しています。実際、他に必要がない限り、designMode と contentEditable を使用する必要はありません。
上記の原則を使用すると、これを実装するのは非常に簡単です。iframe の高さの値をその中のドキュメントの高さの値に設定するだけです。コード
がわかるでしょう。この Web 専門用語のせいで、「おい、臭い!」
参考資料:
https://developer.mozilla.org/cn/Migrate_apps_from_Internet_Explorer_to_Mozilla
http://msdn.microsoft.com/en-us/library/ms533690(VS.85).aspx