2010-01-18 6 views
5

사용자가 하이퍼 링크를 클릭하면 파일을 다운로드하는 팝업 창이 열립니다. 다운로드 후, 열기/저장 대화 상자를 보여줍니다. 다운로드가 완료되면 팝업 창이 닫히고 싶습니다 (사용자가 파일 저장을 요청할 때). window.close 메서드를 시도했지만 컨텍스트가 팝업 창이 아니라 열기/저장 대화 상자로 작동하지 않습니다.파일 다운로드 후 브라우저 팝업 페이지 닫기

답변

5

나는 프로그램 적으로 제어 할 수 없다고 생각합니다. 이것은 특정 브라우저에서 창을 닫는 체크 상자를 체크하는 것을 허용하는 브라우저 관련 사항입니다.

+0

예. 어떤 사용자는 예를 들어 그 창을 붙잡고 싶어합니다. 그래서 그들은 다운로드 후에 그것으로부터 'Run'을 실행할 수 있습니다; 그들이 그것을 선호하는 방식과 그것에 간섭하지 말아야한다는 것입니다 (가능한 것은 아닙니다). 그 행동을 싫어하는 사람들은 상자를 풀어 버릴 것입니다. – bobince

1

브라우저는 사용 된 브라우저, 플러그인 및 서버 설정에 따라 브라우저 창에서 파일을 다운로드하거나 열려고 시도하는 습관이 있습니다. 새 창에서 링크를 여는 것처럼 보입니다. 마치 브라우저가 다운로드하지 않고 파일을 열어 브라우저가 다운로드를 선택한 것처럼 말입니다. 이로 인해 사용자는 다운로드 한 파일과 제어 할 수없는 빈 창을 남겨 둡니다.

강제로 다운로드하려면 application/force-download 링크의 대상에 대한 Content-Type 헤더를 설정할 수 있어야합니다. 이렇게하는 방법은 설정과 파일을 직접 다운로드할지 (서버 설정 일 경우) 또는 PHP 또는 .Net을 통해 파일을 다운로드할지 (프로그램 방식으로 헤더를 쉽게 설정할 수 있는지 여부)에 따라 다릅니다. 또한 새 창에서 링크를 여는 target="_blank" 특성이 하이퍼 링크에 없는지 확인하십시오.

당신이 한 가지 할 수있는
+0

감사합니다. Karl. 문제는 파일을 다운로드하는 것이 아니라 다운로드 후 팝업 창을 닫는 것입니다. – Ankit

+1

올바른 Content-Type 헤더가 있고 target = "_ blank"(또는 window.open)이 없으면 팝업이 처음에는 열리지 않아야합니다. –

+0

팝업을 열고 해당 창에서 맞춤 메시지를 표시하고 싶습니다. 그러나 일단 다운로드가 완료되면, 그 창을 닫고 싶습니다. – Ankit

2

:

1 단계 "서블릿 또는 Struts 액션에 사용되는 파일의 코드를 작성하는"후

가 : 전화 "response.flushBuffer();" 2 단계 : 위해 response.sendRedirect 전화 ("close.htm")

close.htm입니다 : 다운로드가 완료되었는지

<html> 


<script> 


window.close(); 

</script> 

</html> 

만 문제가 식별된다. 나는 그것을 할 수있는 방법이 있다고 생각하지 않는다. 어쨌든 다운로드가 완료 될 때까지 팝업을 열어 두는 용도가 있습니다. 다운로드가 시작되면 팝업을 닫을 수 있습니다. 아래 JavaScript를 사용하면 안되나요?

pop_up= window.open("", "PopUpName"); 
pop_up.document.write('POPUP TEXT');  
pop_up.close(); 
0

브라우저 기능입니다. 브라우저 설정을 변경할 수 있습니다. 프로그래밍을 위해 가면 안됩니다. 기본적으로 파이어 폭스에서 파일을 다운로드하는 경우 저축을 요구하지만 crome에서는 묻지 않습니다. 브라우저의 설정을 변경해야합니다.

관련 문제