2012-01-16 2 views
3

내가 뭔가를 FF에서 잘 작동하지만 IE는 탭을 열려고 같은 window.open는 IE

window.open("myworddoc.doc"); 

아래는 window.open 사용하여 워드 문서를 열하려고에 열리지 만, 즉시 닫습니다 현재 화면으로 돌아갑니다 (파일을 저장하거나 열 수있는 대화 상자가 표시되지 않음).

무엇이 문제 일 수 있습니까?

+1

FYI : IE의 보안 기능과 비슷하게 보입니다. [this] (http://stackoverflow.com/questions/459024/how-do-you-get-window-open-to-work-in-internet- explorer-7) –

+0

브라우저는 사용자가 실행 한 액션이 아닌 한 'window.open'을 사용하여 팝업을 열지 않는 것이 일반적입니다. –

+0

@Emmanuel. 토론에서는 window.open이 사용자 기반 작업에서 트리거되어야한다고 말합니다. 내가 방아쇠 값을 사용하여 그것을 방아쇠를 – DG3

답변

4

이것은 분명 보안 메스이다. JavaScript를 사용하여 Word 문서를 열면 불쾌한 효과가 발생할 수 있습니다. 감염된 Word 문서가 페이지를로드 할 때 열려 있다고 인터넷을 탐색하는 경우를 상상해보십시오. 개인적으로

, 그래서 같이 해당 파일을의 말 "servedoc.php"하자, PHP 파일을 생성하고 열 것 :

<?php 

$file = "myworddoc.doc"; 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: application/msword"); 
header("Content-Transfer-Encoding: binary"); 

readfile($file); 
:

window.open("servedoc.php"); 

servedoc.php는 다음과 같이 포함 할 수

IE는 완벽하게 유효한 웹 파일이므로 PHP 파일을 엽니 다. 그리고 PHP 스크립트는 브라우저에 파일을 제공하여 사용자에게 파일을 다운로드하도록 요청합니다.

+2

왜 당신은 콘텐츠 유형으로'application/zip'을 보내고 있습니까? –

+0

Oups! 내가 가진 실제 사례에서 이것을 복사하여 붙여 넣었습니다. MIME 유형을 변경하는 것을 잊어 버렸습니다. 이것을 지적 해 주셔서 감사합니다! – jValdron

0

아니면 .NET (VB) 사용하는 경우 :이처럼

Response.ContentType = "image/jpeg" 'mime type of the file to serve. 
Response.AddHeader("content-Disposition", "attachment;filename=YOURFILENAME") 
Response.TransmitFile(YourFILEPath) 

을 당신이 원하는 경우 그들을 .DOC 또는 .zip 파일을 다운로드 할 수 있습니다.