2009-09-23 3 views
18

을로드 iframe을 기다립니다 :내가 자바 스크립트에서 iframe 대응을 여는하고 자바 스크립트

righttop.location = "timesheet_notes.php"; 

을 한 다음에 정보를 전달하려는 : 그 라인 않을 것이다,

righttop.document.notesform.ID_client.value = Client; 

를 분명하지만 페이지가 iframe에 완전히로드되고 양식 요소가 기록 될 때까지 작동합니다.

그럼이 문제를 해결하는 가장 효과적인 방법은 무엇입니까? 어떤 종류의 타임 아웃 루프? 이상적으로 나는 열려있는 페이지에 추가 물건을 추가하는 것보다는이 스크립트에 포함 된 모든 것을 유지하고 싶습니다.

답변

40

먼저 location이 아닌 src iframe에 영향을 주어야한다고 생각합니다. 둘째로, 변경 사항을 수행하기 위해 iframe을의 load 이벤트를 훅 :

var myIframe = document.getElementById('righttop'); 
myIframe.addEventListener("load", function() { 
    this.contentWindow.document.notesform.ID_client.value = Client; 
}); 
myIframe.src = 'timesheet_notes.php'; 

을 다시 말하지만,이 모든 당신이 내가 프레임이 아닌 프레임 셋을 의미 추정이다.

+0

감사 Crescentfresh - 그 절대적으로 내가 찾던 무엇을; 간단하고 우아한, 그리고 치료를 작동! :-) –

+0

이벤트를 첨부하여이를 수행 할 수있는 방법이 있습니까? iframe에 자체 onload 핸들러가있을 수 있으며 onload 속성을 재 할당하여 실수로 clobber를 원하지 않는다고 가정 해 보겠습니다. –

+1

@ Eric : 예. Mootools, Prototype 1.6 또는 jQuery와 같은 라이브러리를 사용하십시오. 그 중 하나가 없다면 다음을 사용하십시오 : http://ejohn.org/blog/flexible-javascript-events/ –

4

jQuery로이 작업을 매우 쉽게 처리 할 수 ​​있습니다. jQuery에 페이지를 연결하기 만하면 ... 예 :

$(document).ready(function() { 
$('iframe').load(function() { 
    // write your code here.... 
} 

여기에 파일 업 로더 예제를 간단히 살펴 유무 : Using iframes for multiple file uploads...

+0

나는 jquery에 들어가기를 정말로 원하지 않았다. (그 문을 아직 열어 보지 못했다.) 나는 자바 스크립트의 우아한 줄에서 다루기를 바랐다. 하지만 어쨌든 Rajesh! –

+0

문제가 없습니다. jquery를 사용하지 않고 몇 가지 트릭을 배워야 할 때 게시 해 주셔서 감사합니다. :) –

0

이 하나를 시도 ...

$('iframe').each(function() { 
    $(this).ready(function() { 
     $('#result').html("ready"); 
    }); 
}); 
+6

원래 포스터는 jQuery에 대해 언급하지 않았으며 게시물에 jQuery 태그가 없습니다. 나는 jQuery 응답을 찾지 않을 것을 제안한다. –

+1

iframe 준비가되면 예상대로 작동하지 않습니다. http://tinyurl.com/glybl34 – dude