2012-02-28 3 views
1

웹 페이지 안에 iframe이 있고 준비가되면 무언가를하고 싶습니다. 나는 2 가지 방법으로 시도 : 나는 (내가 원하는대로)이iframe 준비가 완료되면 어떻게 알 수 있습니까?

jQuery('#iframe').load(function() { 
//my code here 
}); 

iframe이로드가 완료되면이 코드가 실행됩니다 사용, 상위 페이지에서

  • 을,하지만 내를하기 때문에 iframe이이 시점에서, 그래서 내가 iframe이 내부 컨텐츠 (크로스 도메인 문제)

    • 에 액세스 할 수 없습니다, 다른 도메인으로 지적되어,이를 사용 :

      jQuery('body').ready(function() { 
      }); 
      

    iframe이 훨씬 이전에 내가 원하는 것보다 로딩을 시작, 그래서 코드가 제대로 작동 할 수없는 경우이 코드가 실행된다.

    그래서 iframe이는 DOM-조작

    에 대한로드 및 준비가 완료되면 내가 코드를 실행 어떻게 검색하고 easyXDM이 해결책이 될 수 있다는 것을 발견,하지만 난이있는 경우 간단한 해결책이 있는지 궁금합니다.

    감사합니다.

+0

크로스 도메인이기 때문에 브라우저에서 도메인 간 정책을 사용하지 않으면 DOM 조작이 불가능합니다. –

+0

나는 약간 혼란 스럽다. '$ (function() {});은 iframe 내부에서 완벽하게 작동해야합니다. 어쨌든 부모 문서에서 조작 할 수는 없습니다. 그래서 그것은 이미 가지고있는 것과 함께 작동합니다. –

답변

1

밑줄 내가 이런 것들을 사용했습니다 편리한 연기 방법을 가지고, 시도 :

$('#iframe').load(function() { 
    _.defer(function(){ 
     //your code here 
    }); 
}); 
+0

'_.defer'는 무엇이고 왜이 상황에서 도움이됩니까? –

+0

_.defer는 iframe 콘텐츠 페이지에 코드가 실행되기 전에 먼저로드 할 수있는 기회를 제공합니다. 콘텐츠 페이지가 처음으로로드되는 것을 보장하지는 않습니다. – KodeKreachor

0

하지 말자 사용 JQuery와, 그것은 당신의 자바 스크립트 지식 혼란을 만들 것입니다,

당신은을 사용할 수 있습니다 당신은 iframe이가 준비되면 알고 싶어하고 해당 iframe이 크로스 도메인의 콘텐츠에 액세스하려는 때문에 코드

<script type="text/javascript"> 
    function show(){ 
     var iframe=document.getElementById('aa'); 
     var h=iframe.contentWindow.document.body.offsetHeight; 
     alert(h)  
    } 
</script> 
</head> 
<body> 
<iframe id="aa" src="3.html" frameborder="0" scrolling="no" width="100%" height="200" onload="show()"></iframe> 
</body> 
+1

질문 : * "내 iframe이 다른 도메인을 가리키고 있습니다"* ... jQuery 사용 여부에 관계없이 다른 도메인의 iframe 내용에 액세스 할 수 없습니다. –

0

다음, 나는 easyXDM 좋은 선택이 될 것입니다 생각합니다.

기본적으로 this example을 구현하고 코드를 "onReady"메소드에 추가하기 만하면됩니다.

관련 문제