2012-03-20 2 views
0

나는 ExtJs 응용 프로그램이 있습니다. 사용자가 서버 측에서 생성 된 PDF 보고서를 볼 필요가있을 때 window.open() 기능을 사용하여 새 링크를 엽니 다. 웹 서버에 저장된 PDF 파일을 제공하는 서비스 URL을 전달합니다.window.open (url) 다른 동작 - 동일한 코드, 다른 타이밍

이 함수는 두 가지 다른 위치에서 호출됩니다. 사용자는 보고서 목록을 스크롤하고 그 중 하나에서 도구 모음 단추를 클릭하여 보고서를 보거나 사용자가 보고서를 실행하고 생성 될 때까지 기다렸다가 응용 프로그램이 자동으로 표시 할 수 있습니다. 두 번째 시나리오의 유일한 차이점은 두 번째 시나리오가 비동기식이고 보고서가 열려있는 마지막 단계가 콜백 함수에서 호출된다는 것입니다.

하지만이 두 경우는 다르게 동작합니다. 첫 번째 버전 - Chrome 및 Safari에서 새 탭이 열리 며 이는 popup 창으로 간주되지 않습니다. 두 번째 경우 - 새 창에서 열립니다 (물론 동일한 브라우저에서 - 구성이 동일합니다).

나는 왜 행동이 다른지 파악하려고합니다.

아이디어가 있으십니까?

업데이트 : 명확히하기 위해 - 둘 다 JS 호출입니다.

buttonClick: function() { 
    window.open('myreporturl'); 
} 

다른 조금 더 복잡하지만, 마지막에 : : 하나 같은이

runReport: function() { 
    store.on('load', function { 
     window.open('myreporturl'); 
    }); 
    store.load(); 
} 

갱신 2 : 나는 무슨 일이 일어나고 있는지 알아낼 수 있었다. JS가 사용자가 이벤트를 시작한 직후 (사용자가 기본적으로 클릭) 외부 창을 열면 브라우저가 새 탭으로 처리합니다. 동일한 버튼 클릭 이벤트 핸들러에 대해 5 초의 지연 시간을두면 새 창으로 처리됩니다.

누구에게나 맞습니까?

+0

이것은 extjs 창 또는 일반 브라우저 창 – dbrin

+0

일반 브라우저 탭/창입니다. 그것은 외부 PDF 파일이고 ExtJs 창에 포함하고 싶지 않았습니다. – sha

+0

은 HTML 링크이고 다른 하나는 js 메서드 호출입니다. window.open을 호출하는 실제 코드 게시 – dbrin

답변

1

나는 무슨 일이 일어나는지 알 수있었습니다. JS가 사용자가 이벤트를 시작한 직후 (사용자가 기본적으로 클릭) 외부 창을 열면 브라우저가 새 탭으로 처리합니다. 동일한 버튼 클릭 이벤트 핸들러에 대해 5 초의 지연 시간을두면 새 창으로 처리됩니다.

누구에게나 맞습니까?

+0

동일한 문제가 발생하여 새 창에서 PDF를 열려고합니다. 결국이 문제를 해결 했습니까? 가짜 onclick 이벤트는 어떻습니까? – okyanet

+0

예. 보고서를 보여주기 전에 확인 상자를 추가하여 문제를 해결했습니다.첫 번째 보고서가 생성 된 후 준비가되면 확인 상자가 표시되고 사용자가 보고서를 클릭하면 현재 보고서가 표시됩니다. – sha

관련 문제