Coldfusion 弹出窗口中显示cfcontent的空白页面(除非手动刷新)

Coldfusion 弹出窗口中显示cfcontent的空白页面(除非手动刷新),coldfusion,Coldfusion,我有一个ColdFusion页面,将cfm页面作为弹出窗口调用。打开(…)。目标页面是加载PDF文件的cfm。调用的页面代码如下所示: <cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/> <cfflush> <script language="javascript"> window.location.reload(); </scrip

我有一个ColdFusion页面,将cfm页面作为弹出窗口调用。打开(…)。目标页面是加载PDF文件的cfm。调用的页面代码如下所示:

<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>
<cfflush>

<script language="javascript">
 window.location.reload();
</script>

window.location.reload();
不幸的是,我只能得到一个空白页面,除非我手动刷新页面(进入弹出的URL栏并点击回车键),使其内容显示在浏览器中

奇怪的是,如果我将调用方页面代码从window.open()替换为document.url=则显示PDF而无需刷新页面

您对如何将目标页面作为弹出窗口调用并在不需要手动刷新的情况下加载有何建议


谢谢。

问题在于您将javascript和PDF内容混合在一起。应该是这样的:

<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>

这会将该PDF的全部内容返回到浏览器

你想用javascript代码做什么

编辑它听起来可能与缓存有关。要防止出现这种情况,请尝试向文件中添加一些缓存控制头:

<cfheader name="expires" value="#getHttpTimeString(now())#"> 
<cfheader name="pragma" value="no-cache"> 
<cfheader name="cache-control" value="no-cache, no-store, must-revalidate"> 
<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>

如果这不起作用,请尝试添加此选项:

<cfheader name="Content-Disposition" value="attachment; filename=myPDF.pdf">

我采用的解决方案是调用代理页面,然后代理页面生成PDF文件。因此:

  • window.open('2')
    //在弹出窗口中打开PDF

  • document.location='3'
    //代理

  • cfcontent type='application/pdf'文件='…'
    //生成pdf


  • 为什么我现在不能只使用1和3是一个谜,但在我的情况下,它工作得非常完美。

    嗨,杰克,事实上,之前的代码就像你建议的那样,但PDF仍然没有出现,除非我从浏览器手动刷新。使用JS代码,我试图强制浏览器自动刷新页面,就像我在URL字段上按enter(return)时所做的那样。这就是为什么我还添加了cfflush。只有当调用者执行document.url而不是通过window.open时,您的代码作为我的代码才有效。在我的情况下,后者需要强制手动刷新,我还不知道为什么!杰克非常感谢你的投入。但是,这些代码在我的情况下都不起作用。我把我的系统部署在JBoss/Suse Linux上,也许它也与此相关。但是,我今天就把它解决了。刚才有一个window.location链接到另一个包含cfcontent标签的cfm页面(在那里加载pdf),您是否使用相同的URL来提供HTML和pdf内容?如果是这样,那很可能是根本问题。最好为PDF(或任何其他mime类型)内容提供不同的URL,以免混淆浏览器。奇怪的是,您的代码(第一个代码块包含无缓存pragma),就像我的情况一样,我得到了一个空白的弹出窗口(具有正确的URL)。浏览器就像开始下载PDF,然后停止(没有web或应用程序级错误)。我不得不进入弹出窗口,用鼠标在URL上点击回车键。然后,我让浏览器显示PDF!奇怪的我正在使用的环境是Suse/JBoss/JDK1.5环境。