2010-12-15 16 views
2

iframeが新しいページを読み込んだとき(ユーザーがリンクをクリックしたことによる可能性が高い)にトリガーされるイベントを親に設定しようとしています。iFrameで新しいページが読み込まれたときのjQueryイベント

HTML:

<iframe name="posts" id="posts" src="edit.php"> 

JS:

$(document).ready(function() { 
    $('iframe#posts').live('load', function() { 
     console.log('live'); 
    }); 
}); 

問題はconsole.log()文がトリガーされることは決してありませんということです。私は何をしようとしているのですか?

答えて

1

ドキュメントの 'ready'イベントの前にiframeの 'load'イベントが発生していると思われます。つまり、ハンドラが遅すぎます。 iframe要素自体に古い形式のonloadを使用する必要があります。

また、$('iframe#posts').live()スニペットを準備完了ハンドラではなくトップレベルスクリプトに入れることもできます。

+1

古い学校の '<インラインフレームのonload = "...">は'とてもうまくいきました。私は '.live()'呼び出しをグローバルスコープに入れようとしましたが、それでも何もしないように見えました。 – ggutenberg

+0

@dosboyはダンの推測が正しいとすれば理にかなっています。 iframeはまだドキュメントの前にトリガーされています。 – cregox

2

問題を解決する最も簡単な方法は、iframeをjQueryで作成することです。

$(document).ready(function() { 
    $("<iframe />").attr({ 
     id: "posts", 
     src: "edit.php" 
    }).load(function() { 
     console.log('live'); 
    }).appendTo("body"); 

この質問はasked here beforeです。

2

私が使用する方法は

<iframe onload="hide_html_player_contents_loading();" ...../> 
+0

Sue

関連する問題