2010-12-07 15 views
0

iframeを含むHTMLページがあり、iframe内のリンクに関数を書き込もうとしています。関数はHTMLページを変更します...jquery iframe src

次のスクリプトは、iframeでクリックされた最初のリンクで動作します。しかし、iframeが "src"を変更すると、関数はそれ以上動作しなくなります。

iframeのsrcが変更された場合でも、どのように動作させることができますか?

(すべてのページが同じドメイン上にある)

<script type="text/javascript"> 
    $("iframe").contents().find("a").click(function() { 
    alert('Load was performed.'); 
    }); 
</script> 
+0

これは私がそれをsloved方法です: VAR chooseName = $( 'IFRAME'); {}); });} {を選択してください。 メモ以下のOmeid Heratからのコメント。このスクリプトはクロスドメインでは機能しません。それがサブドメインであっても。 Stackoverflow rocks!間違いなくそれを使用しますagin :) – Hakan

答えて

1

.live()メソッドを使用しようとすると、イベントは既存の要素と将来の要素にバインドされます。 srcを変更するときは、clickイベントを新しいリンクに再度バインドする必要があります。

.live()メソッドはインラインフレーム上で動作しますが、あなたはこの試みることができるかどうかはわからない。私の壊れた英語のため申し訳ありません

$("iframe").contents().find("a").live('click',function() { 
    alert('Load was performed.'); 
    }); 

を!

これは動作するかどうかわかりません(私は今、何かをテストする必要はありません)。iframeのonLoadイベントで関数をバインドしようとするとどうなりますか?それはiframe)が、それはすべてのブラウザでサポートされているように見える、イベントがありません:

<iframe src="/my_contents" onLoad="onload_function()"></iframe> 
    ... 
    <script> 
     onload_function(){ 
      $(function(){ 
      $("iframe").contents().find("a").click(function() { 
       alert('Load was performed.'); 
      }); 
      }); 
     } 
    </script> 
+0

.live()メソッドはiframeで動作するように継ぎ目がありません。厳しい試してくれてありがとう。クリックイベントを再度バインドできる他の方法はありますか? (関数をリロードする) – Hakan

+0

IEでiframeが読み込まれた後に動作する(onload)、ありがとう! – kicaj

0

それはそのクロスドメインとして機能しませんので、Some Origin polciyで作業している場合ではないはずですあなたのドメインとその同じ場合。

+0

私は同じiframeにとどまる限り、それは動作します。しかし、iframeに新しいURLが再ロードされても動作しません。 – Hakan

+0

私は同じiframeにとどまる限り動作します。しかし、iframeに新しいURLが再ロードされても動作しません。 すべてのURL:sとsrcは同じドメインです... 回答ありがとうございました:) – Hakan

+0

@Hakan:URL形式を確認するhttp://example.comはwww.example.comと同じではありません –