2012-01-16 65 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文件,如果你喜欢。

相关问题