【问题标题】:window.open does not open in IEwindow.open 无法在 IE 中打开
【发布时间】:2012-01-16 20:19:22
【问题描述】:

我正在尝试使用 window.open 打开一个 word 文档,如下所示

window.open("myworddoc.doc");

它在 FF 中运行良好,但 IE 尝试打开一个选项卡,但立即将其关闭并跳回当前屏幕(不显示保存或打开文件的对话框)。

可能是什么问题?

【问题讨论】:

  • 仅供参考:似乎是 IE 检查中的安全功能this
  • 浏览器通常讨厌使用window.open 打开弹出窗口,除非它是由用户触发的操作。
  • @Emmanuel。讨论说 window.open 应该在基于用户的操作上触发。我正在使用下拉值来触发它

标签: javascript internet-explorer-8


【解决方案1】:

这肯定是一种安全措施。使用 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 文件,因为它是一个完全有效的 Web 文件。 PHP 脚本会将文件提供给浏览器,要求用户下载文件。

【讨论】:

  • 为什么要发送 application/zip 作为内容类型?
  • 哎呀!从我的一个工作示例中复制粘贴此内容。忘记更改 MIME 类型,谢谢指出!
【解决方案2】:

或者,如果您使用的是 .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 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2011-03-05
    • 2014-05-29
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多