2

iframe 内のドキュメントが別のドメインにある場合、親ドキュメントから iframe 内のドキュメントの DOM にアクセスする方法はありますか? 親ページと子ページの両方が同じドメインにある場合は簡単にアクセスできますが、異なるドメインにある場合はアクセスできる必要があります。

そうでない場合は、iframe のコンテンツを読み取る別の方法があるかもしれません (ActiveX コントロールを作成することを検討しました。これは社内でのみ使用するためですが、クロスブラウザー互換性があることをお勧めします)。

4

3 に答える 3

3

あまり。これはセキュリティ上不可欠です。そうしないと、私のオンライン バンキング サイトや Web メールを開いて、いじってしまう可能性があります。

を設定することで制限を少し緩めることができますdocument.domainが、それでもトップ レベル ドメインは同じでなければなりません。

独自のサーバーを介してリクエストをプロキシすることで、この制限を回避できます (ただし、セキュリティを確保することを忘れないでください。そうしないと、s[cp]ammer がそれを悪用する可能性があります)。

my.example.com/proxy?url=otherdomain.com/page
于 2008-12-03T00:08:44.137 に答える
1

理論的には、標準の DOM level2 contentDocumentプロパティを使用して、iframe のコンテンツにアクセスできます。実際には、ほとんどのブラウザがセキュリティ上の懸念から、外部ドキュメントの DOM へのアクセスを拒否していることに気付いたかもしれません。完全な DOM AFAIK へのアクセスは不可能です (ただし、同じドメイン チェックを無効にするためのブラウザー固有の調整があるかもしれません)。クロスドメイン XHR の一般的なトリックは、URL フラグメント識別子を使用して iframe とメイン ドキュメントの間でデータをやり取りすることです (たとえば、このリンクを参照)。同じ手法を使用できますが、次のようになります。

  • iframe に読み込まれたドキュメントは連携する必要があります。
  • いずれにせよ、完全なドキュメントにアクセスすることはできません (いくつかのパラメーターを読み返すことも、ドキュメント全体を URL エンコードすることもできますが、それは非常に見苦しくなります)。
于 2008-12-03T00:11:17.847 に答える
0

postMessageHTML5 で導入されたメソッドを見つけました。最近のブラウザー (FF3、IE8、Safari 4) には既に実装されています。これにより、ブラウザー内の任意のウィンドウ オブジェクト間でメッセージを交換できます。詳細については、MDCのドキュメントと、John Resig によるこの素敵なチュートリアルを参照してください。

于 2009-02-07T15:25:07.167 に答える