IE不会在使用window.open创建的窗口中加载PDF

时间:2010-04-27 19:27:52

标签: javascript internet-explorer window new-operator window.open

这是问题,仅出现在Internet Explorer(IE)中。我有一个页面,其中包含指向几种不同类型文件的链接。来自这些文件的链接执行Javascript函数,该函数打开一个新窗口并加载特定文件。这很好用,除非我需要在新窗口中打开的文件是PDF,在这种情况下窗口是空白的,即使URL在地址字段中。使用F5刷新该窗口没有帮助。但是,如果我将光标放在地址字段中并按<enter>,PDF会立即加载。

此问题仅发生在IE中。我在IE 7和8中看过它并使用的是Adobe Acrobat Reader 9.在 Firefox (PC和Mac)中,一切都运行良好。在 Chrome (Mac)中,下载PDF。在 Safari (Mac)中,它可以正常运行。在 Opera (Mac)中,它会提示我打开或保存。基本上,除了IE之外,一切都可能正常。

我已经搜索过类似的问题,并且已经看到一些帖子,建议在IE上调整一些Internet选项。我试过这个但是没有用,反正问题也不一样了。

这是我用来打开新窗口的Javascript函数。

function newwin(url,w,h) {
   win = window.open(url,"temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes");
   win.focus();
}

您可以看到我传入了URL以及窗口的高度,h和宽度w。我已经使用了这样的功能多年,据我所知,从来没有遇到过问题。

我使用此函数调用newwin()函数。

<a href="javascript:newwin('/path/document.pdf',400,300)">document.pdf</a>

(是的,我知道除了使用内联JS之外还有其他更好的方法,我甚至尝试过其中的一些,因为我已经用尽了一些东西,但没有任何作用。)

所以,如果有人知道可能导致这个问题的原因,我很乐意听到。

2 个答案:

答案 0 :(得分:12)

尝试:

function newwin(url,w,h) {
     var win = window.open("","temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes");
     win.location.href = url;
     win.focus();
}

答案 1 :(得分:2)

我用不可见的iframe解决了这个问题

<div id="iframe" style="display: none">
  <iframe id="frm" style="display: none"></iframe>
</div>

这里的逻辑(使用jquery):

if ($.browser.msie && ($.browser.version &lt; 9.0)) {
  frm.location.href = href;
}
else {
  window.open(href);
}

在我的情况下的行为就像在弹出窗口中打开文档一样,因为我正在使用

Content-Disposition: attachment; filename="document.pdf"