2012-05-29 3 views
9

window.open 함수가 완전히로드 된 후 함수를 호출하려고합니다.Javascript window.open 이후의 함수 호출

그러나 onload 함수를 사용하는 것이 너무 빨리 호출됩니다. 적중중인 URL은 Excel 스프레드 시트를 열고 2 초에서 1 분 정도 소요됩니다.

window.open 함수가 호출되자 마자 onload 함수가 호출됩니다. 그러나 URL이 잘못되었을 때가 아니라 Excel 문서가 열렸을 때를 알아야합니다.

나는 간격을 설정 시도했다 그러나 그것은 호출되는 아니에요 :

w = window.open(url,'_parent',false); 

w.onload = function(){ 
    console.log('here'); 
    setInterval(function(){ 
     alert('Hi'); 
    },10); 
+0

왜 자식 창에서이 작업을 수행하지 않습니까? 그리고 Excel 파일을 여는 코드를 공유하는 것을 신경 쓸 필요가 없다면 파일을 Excel 파일로로드하는 것이 실제 트리거가되기 때문에 멋지게 될 것입니다. –

+0

파일을 열 때 Excel 파일을 열 것인지 아니면 언제 열렸는지 정확히 알고 있습니까? – zaw

+0

나는 엑셀 파일이 열렸을 때/윈도우가 문서를 완전히로드했음을 알 필요가있는 extjs 그리드가 뒤에있다. Excel 파일을 여는 CGI 스크립트입니다. – pm13

답변

4

먼저 참고 때문에 크로스 도메인 제한으로 차단하지 않고이 작업을 수행하기 위해 (또는에 CORS 헤더를 매개 변수화하지 않고 그 서버)을 수행해야합니다

  • 는 메인 페이지와 같은 도메인에 팝업 내용 (엑셀 파일) 및
  • http://에 메인 페이지를 열려면 동일한 포트 모두를 제공 "이미지와 같은 모든 자산이 완전히 수신 될 때까지"되지 않은 조건이 존경하는 경우 file://

에서, 최선의 해결책은 load 기능 대기로 jQuery를 사용하는 것입니다

<html> 
    <head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
<body> 
<script> 
var popup = window.open('popup.html'); 
$(popup.document).load(function() { 
    alert('loaded'); 
    // do other things 
}); 
</script> 
</body> 
</html> 

하는 것은주의해야 글로벌 구성 : 각 브라우저/구성은 파일을 "열어"생각할 때 다른 것을 할 수 있습니다. open을 해독하기로 결정한 경우 적절한 플러그인을 찾지 못하고 단순히 다운로드 한 방법이 없습니다.

+0

cors 헤더가 창 원본을 무시할 수 있는지 잘 모르겠습니다. – user2284570