8

jqueryを使用して、ソースを持つ動的iframeを別のドメインに追加する親htmlページがあります。これを許可するように X-Frame-Options を既に設定しており、プレーン コンテンツの読み込みは問題ありません。実際、私の他のすべてのスクリプトは正常に動作しているようです。

iFrame に読み込まれる html ページは、$(document)のような行がいくつかあるjQuery DirtyForms プラグインを使用します。ダーティ フォーム コードと jQuery スクリプトはどちらも、iframe のドキュメントに対してローカルです。

これらの行のいずれかが実行されると、Firefox で次のエラーが表示されます (他のブラウザーはテストしていません)。

親ページが子のスクリプトにアクセスしようとしている場合、またはその逆の場合、これは問題のようですが、私の場合、エラーのあるスクリプトは子にローカルです。

ところで。iFrame 内にロードされていない場合、子コードは完全に機能します。

私は今、回避策を見つけるのに途方に暮れています。

$(document) がどういうわけか親として評価されていると思います。

この動作を修正する方法はありますか? おそらく、プラグインのコードを変更することによって。おそらく、$(document).find('contentWindow')...??

助けてくれてありがとう!ありがとう。

4

2 に答える 2

2

さて、あなたはそれにアクセスできません..さて、問題はなぜですか?

そのためには、以下のリンクにアクセスしてください

プロパティ「ドキュメント」へのアクセスが拒否されました

エラー: プロパティ 'ドキュメント' へのアクセスが拒否されました

そして、あなたの場合、ページの読み込み時に何かをしたい場合は、以下のコードを IFrame に使用することをお勧めします

 <iframe ........ onload='yourFunction( this )'>
于 2014-05-07T04:53:00.430 に答える
0

Dirty Forms 1.x では、既定の動作により、現在のページがホストされている親ページのアンカー タグにイベント ハンドラーがアタッチされます。それを行うコードは次のようになります。

$(top.document).on('click', 'a', aBindFn);
$(top.document).on('submit', 'form', formBindFn);

つまり、イベント ハンドラを にアタッチしていwindow.top.documentます。次を使用して、その動作をオフにすることができます。

$.DirtyForms.watchParentDocs = false;

Dirty Forms 2.x では、iFrame の 1 つの特定のユース ケース (iFrame 内で Dirty Forms を使用するフォームをホストする) にのみ関連するため、この動作は削除されました。イベント バインディングをカスタマイズして、ページの必要に応じて親 (ホスト) ページまたは子 iFrame にイベント ハンドラーをアタッチできるようになりましたが、既定では iFrame とのやり取りはありません。これにより、このような問題を回避できるはずです。

于 2016-02-21T16:12:46.717 に答える