2012-11-21 4 views
0

여기에서 뭔가를하려고합니다. 배열을 설정 한 문서가 있습니다. 그리고,이 JQuery와 배열을 각각의 값은 iframe을 추가 :iframe 내부의 함수 호출

<script> 
    var containers = new Array("test1", "test2"); 
</script> 

이 결과는 자신의 이름과 식별 번호 (2)가 iframe이다. 승인. 완벽하게 작동합니다. 그런 다음 각 iframe 내부에서 문서를 호출합니다. 이 문서에서는 play()이라는 함수가 있습니다.

경고를 반환하여 play()을 테스트하고 있습니다. 버튼을 클릭 할 때마다 작동합니다 :

$("#viewport .next").click(function(){ 
    document.getElementById(containers[current]).contentWindow.play(); 
}); 

이것은 작동합니다. 아주. 그러나 나는이 기능을 문서 준비에 방아쇠를 당겼다. 그것은 작동하지 않는다.

$(function() { 
    document.getElementById(containers[current]).contentWindow.play(); 
}); 

그것은 나에게 반환

Uncaught TypeError: Object [object Window] has no method 'play'

은 뭐죠 내가 잘못들 뭐하는 거지? 감사합니다.

편집은 iframe에 온로드를 적용했습니다. didnt는 일한다. 어떤 이유

EDIT2

var initialFrame = containers[qual]; 

initialFrame.onload = function() { 
    document.getElementById(initialFrame).contentWindow.play(); 
}; 

, 그것은 일하기 시작했다. 감사!

+0

'iframe'의'load' 이벤트를 기다립니다. – alex

+0

나는 시험해 보았다. 편집 됨. –

+0

감사합니다. 부하가 필요했습니다! –

답변

1

load 이벤트가 처음으로 iframe이 될 때까지 기다리십시오.

initialFrame.addEventListener("load", function() { 
    initialFrame.contentWindow.play(); 
}); 
+0

IE에서 contentWindow가 작동하지 않습니다. IE와 함께 작동시키는 방법은 무엇입니까? – oneofakind

0

당신은 일반적으로이 같은 iframe 대응의로드 이벤트를 수신합니다 :

$("#iframe").load(function(){ 
    // iframe is loaded 
}); 

...하지만 최근에이에 문제가 있었다 그것이로드 때까지 내가 대신 반복해서 iframe 대응의 내용에 대한 확인 다음과 같이하십시오 :

function loadFrame() { 
    if($('body', $('#iframe').contents()).length != 1) { 
     setTimeout(loadFrame,500); 
    } 
    else { 
     // iframe is loaded 
    } 
}; 
loadFrame(); 

이것이 최선의 해결책인지 확실하지는 않습니다.