2010-12-15 4 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

가장 좋은 추측은 iframe의 'load'이벤트가 문서의 'ready'이벤트보다 먼저 발생했기 때문에 처리기가 너무 늦게 설치되었다는 것입니다. iframe 요소 자체에서 구식 onload을 사용해야 할 수 있습니다.

또는 $('iframe#posts').live() 스 니펫을 준비된 처리기가 아닌 최상위 스크립트에 넣을 수 있습니다.

+1

오래된 학교 '는'좋은 일했다. '.live()'호출을 전역 범위에 넣으려고했지만 여전히 아무 것도하지 않는 것 같습니다. – ggutenberg

+0

@dosboy는 Dan의 추측이 옳다면 말이됩니다. iframe은 여전히 ​​문서보다 먼저 트리거됩니다. – cregox

2

문제를 해결하는 가장 쉬운 방법은 jQuery로 iframe을 생성하는 것입니다.

$(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

관련 문제