2012-01-16 64 views
3

我嘗試使用window.open如下window.open不會在IE中打開

window.open("myworddoc.doc"); 

它工作正常,在FF,但IE瀏覽器試圖打開一個標籤一個word文檔,而是立即將其關閉並跳回當前屏幕(不顯示對話框來保存或打開文件)。

可能是什麼問題?

+1

供參考:好像在IE中的安全特徵檢查OT [此](http://stackoverflow.com/questions/459024/how-do-you-get-window-open-to-work-in-internet- explorer-7) – 2012-01-16 20:29:29

+0

瀏覽器通常討厭使用'window.open'打開彈出窗口,除非它是由用戶觸發的操作。 – 2012-01-16 20:35:11

+0

@Emmanuel。討論說,window.open應該基於用戶的行動觸發。我正在使用下拉值來觸發它 – DG3 2012-01-16 21:06:32

回答

4

這無疑是一種安全性。使用JavaScript打開Word文檔可能會產生令人討厭的效果。想象一下,如果您正在瀏覽互聯網,並且有人在加載頁面時打開受感染的Word文檔。

就個人而言,我想創建一個PHP文件,讓我們說 「servedoc.php」,並打開該文件就像這樣:

window.open("servedoc.php"); 

servedoc.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); 

IE將打開PHP文件,因爲它是一個完全有效的網頁文件。 PHP腳本會將文件提供給瀏覽器,要求用戶下載文件。

+2

爲什麼你發送'application/zip'作爲內容類型? – 2012-01-16 20:31:50

+0

Oups!複製粘貼從我有一個工作的例子。忘了更改MIME類型,謝謝指出! – jValdron 2012-01-16 20:57:17

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文件,如果你喜歡。

相關問題