2010-04-27 162 views
13

以下是仅在Internet Explorer(IE)中出现的问题。我有一个页面可以链接到几种不同类型的文件。这些文件的链接执行一个Javascript函数,打开一个新窗口并加载特定的文件。这很好,除非我需要在新窗口中打开的文件是PDF,在这种情况下窗口是空白的,即使URL在地址字段中。使用F5刷新该窗口并没有帮助。但是,如果我将光标放在地址栏中,并按<enter> PDF加载正确。IE不会在使用window.open创建的窗口中加载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更好的办法,我甚至已经尝试了一些他们,因为我已经跑出来的东西去尝试,但没有任何工程。)

所以,如果有人有什么可能会导致这个问题的想法,我很乐意听到它。

回答

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(); 
} 
+2

我有一个类似的问题,应用您的解决方案后,pdf现在呈现完美。你能解释一下这是如何工作的吗?它是区域还是安全?为什么当我仅使用window.open时它不工作? – SoftwareGeek 2010-05-11 13:56:58

+1

我很确定这只是IE实现中的一个错误(像往常一样)。如果这是一个安全问题,那么它根本无法工作。 – 2010-05-11 15:31:08

1

我已经(使用jQuery)在这里解决了这个问题,一种无形的iframe

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

而这种逻辑:

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

在我的案件的行为就好像文档在弹出窗口中打开一样,因为我正在使用

Content-Disposition: attachment; filename="document.pdf" 
相关问题