나는 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 초의 지연 시간을두면 새 창으로 처리됩니다.
누구에게나 맞습니까?
이것은 extjs 창 또는 일반 브라우저 창 – dbrin
일반 브라우저 탭/창입니다. 그것은 외부 PDF 파일이고 ExtJs 창에 포함하고 싶지 않았습니다. – sha
은 HTML 링크이고 다른 하나는 js 메서드 호출입니다. window.open을 호출하는 실제 코드 게시 – dbrin