2012-03-02 3 views
2

빈은 iframe을 가져옵니다추가 내용이 나는 아래와 같이 jQuery를 조각이

이벤트의 경우 이벤트가, 처음에 단지 빈 iframe이 표시를 트리거되지만
$.ajax({ 
    .... 
    success: function(myContent) { 
    ..... 
    $('<iframe id="myFrame" name="myFrame">').appendTo('body').ready(function(){ 
     $('#myFrame').contents().find('body').append(myContent); 
    }); 
    ..... 
    }); 
}); 

두 번째로 트리거되면 콘텐츠가 iframe에 성공적으로 추가됩니다. 이 스 니펫에 명백한 오류가 있습니까?

답변

11

일부 브라우저는 새로운 iframe의 DOM을 인식하기 위해 약간의 지연이 필요하다고 생각합니다. 타임 아웃을 사용하여 작동합니다 :

$('<iframe id="myFrame" name="myFrame">').appendTo('body'); 
$('iframe').contents().find('body').html(myContent);  

데모 : http://jsfiddle.net/vbNGA/1/

+0

예, 작동합니다. 답장을 보내 주셔서 감사합니다. – cnherald

+0

추측에 따라 지연 시간은 큰 해결책이 아닙니다. 'contents() '를 사용하는 다른 답변은 지연없이 작동하므로 바람직합니다. –

4

나는 이것이 당신이 찾고있는 무엇을 생각 나를.

$("#iframe_id").contents().find("body").append("Contents to display in iframe"); 
+0

안녕하세요 codefOrmer, 답변 해 주셔서 감사합니다, 아담의 대답이 내 문제를 해결했습니다. – cnherald

+3

@cnherald 누가 Adam입니까? – dezman

1

이 간단한 코드가 사용 될 수 있습니다, 그것은 잘 동작

$('<iframe id="myFrame" name="myFrame">').appendTo("body").ready(function(){ 
    setTimeout(function(){ 
     $('#myFrame').contents().find('body').append(myContent); 
    },50); 
}); 
관련 문제