2009-11-10 3 views
11

그래서 iframe을 쓸 수있을 때까지 setInterval을 수행하는 다음 코드를 작성했습니다.jQuery에서 동적 iframe을 만드는 더 좋은 방법은 무엇입니까?

$('#testdiv').append($('<iframe id="testiframe"/>')); 
var t = setInterval(function(){ 
    if(document.getElementById('testiframe') !== 'undefined'){ 
     clearInterval(t); 
     $('#testiframe').contents().find('body').append('asd'); 
    } 
}, 15); 

기본적으로 jQuery는 iframe 요소를 만들어 DOM에로드합니다. 그러나 iframe을 즉시 사용할 수 없기 때문에 추가 jQuery 호출이 바로 발생하도록 코딩되어 있습니다. 이 코드 조각을 사용하면 새 iframe을 사용할 수있을 때까지 간단한 간격 확인을 수행 한 다음 내용에 'asd'를 씁니다.

나는 약 1 시간 동안 iframe 생성에 대한 여러 가지 방법을 시도해 보았지만 아무 것도 실제로 작동하지 않았습니다. 그것은 모두 타이밍 문제로 보입니다. 나는 $ ('# testiframe')을 시도했다. live ('load', function() {}); 그리고 그것은 전혀 작동하지 않습니다.

누구나 이것에 대한 권장 사항이 있습니까?

+0

관련 : http://stackoverflow.com/questions/205087/jquery-ready-in-a-dynamically-inserted-iframe – artlung

답변

26

live이없는 일반 이벤트일까요?

$('<iframe id="testiframe"/>').load(function(){ 
    $('#testiframe').contents().find('body').append('asd'); 
}).appendTo("#testdiv"); 
+0

이 우수합니다. #testdiv 요소에 이벤트를 첨부하기 전에 이벤트를 할당하지 않았습니다. 회 돌이에서는로드 이벤트를 첨부하지 않고 iframe에 바인딩 할 수 있다고 별도로 확인했기 때문에 생각해야합니다. $ ('