1

このように動的にiframeを作成すると

$( '<iframe/>' )
    .attr('id', 'aaoifr0')
    .attr('src', aPageName)
    .appendTo(_public.content);

bodyiframe内の要素にクリックイベントを追加します

$('#aaoifr0')
    .contents().find('body').click(function(){ alert(0) });

それは動作しません。

ただし、iframeが表示された後、firebugを介して、次のように手動でイベントを追加すると、次のようになります。

$('#aaoifr0').contents().find('body').click(function(){ alert(0) });

それはうまくいきます!

iframeコンテンツの読み込みの同期/非同期を確認するいくつかの方法を試しましたが、有用な答えが見つかりませんでした。これを機能させる方法はありますか?

4

2 に答える 2

2

OK、解決しました。

.load()解決策は、JQueryで作成されたフレームオブジェクトのメソッドを使用することです。

注意:使用しない.ready()でください。親ドキュメントを参照します。次の方法でテストできます。

$('<iframe/>')
  .attr('id', 'someId')
  .attr('src', 'aPageSrc')
  .appendTo(_public.content)
  .load(function() {
    $(this).contents().find('body').click(function() {
      alert('Loaded!');
    });
  })
  .ready(function() {
    $(this).contents().find('body').click(function() {
      alert('Ready!');
    });
  });

これは理解するのが難しかったです、私は次のものがとても簡単であることを望みます。

于 2012-05-16T18:16:11.437 に答える
0

あなたが試すことができます

$('<iframe id="aaoifr0" src="' + aPageName  + '"></iframe>')

また、jqueryオブジェクトを追加する場合、オブジェクトのコンテンツではなく、別のjqueryオブジェクトに追加する必要があります。_public.contentは、オブジェクトによっては問題になる可能性があります。より安全に試す

$('<iframe id="aaoifr0" src="' + aPageName  + '"></iframe>').appendto( $('document.body') );

iframeで問題が発生したと思います

<iframe />

あなたが必要

<iframe></iframe>

また、jqueryは、iframesrcが同じドメインからのものである場合にのみiframeコンテンツにアクセスできます。しかし、firebugは機能するので、問題にはならないはずです

それが役立つかどうかわからない場合は、他に問題があるかどうかをお知らせください。

于 2012-05-16T01:33:42.957 に答える