【问题标题】:window.open() does not open when clicked more than once多次单击时 window.open() 不会打开
【发布时间】:2012-02-01 23:06:16
【问题描述】:

在我的 JSP 应用程序中,我有一个打开新窗口的 javascript 函数。 reportURL 是对生成 pdf 文件的 asp 应用程序的调用。所以,如果你调用那个asp页面,它就会产生pdf数据。

我拥有的javascript是:

function openReport(id)
{
    window.open('<%=reportUrl%>&id='+id,
                '_blank',
                'width=900 height=900 scrollbars=yes status=yes'
               );
}

现在我的应用程序运行良好,当点击报告链接时,它会打开一个新窗口,我可以查看我的 pdf。但是,当我关闭 pdf 报告窗口并再次单击链接以生成报告时,它会打开一个新窗口(没有 pdf)。这个新窗口看起来不像一个空白窗口,因为背景不是白色,而是看起来像浏览器的 pdf 插件识别它是 pdf,因为我可以看到灰色背景但我无法查看文档。

谁能告诉我问题出在哪里?

【问题讨论】:

  • 听起来可能是浏览器特有的问题,你测试过不同的浏览器吗?结果一样吗?
  • 不,我正在处理仅在 IE 上运行的旧版 JSP 代码,所以很遗憾我无法在其他浏览器上进行测试。有解决方法吗?
  • 在我看来,当 URL 打开时,您可能会即时生成报告?如果这是真的,它的后端代码是什么样的?它是否可能/只能生成一次报告,而后续加载不会生成完整的新报告?您可以使用 fiddler (fiddler2.com) 检查是否打开/请求了正确的 URL。
  • 通过复制/粘贴网址在其他浏览器中进行测试。首先检查复制/粘贴到 IE 中是否会在您的问题中出现相同的问题,然后查看在其他浏览器中是否相同。 PDF 可能会导致一些奇怪的问题,我对 IE 的信任甚至不如 Adob​​e 的 PDF 插件。
  • 我检查过了。无论我打开多少次和打开多少个窗口,在 IE 中复制粘贴 URL 都有效。问题只是当我尝试通过 window.open() 命令打开它时。@PriorityMark,是的,我正在尝试即时生成报告。后端代码从 JSP 应用程序中获取一些参数并生成 PDF。如果我通过复制粘贴 URL 来尝试这个,它工作正常,所以问题必须与 IE 中的 window.open ..

标签: javascript asp.net html jsp pdf


【解决方案1】:

我的猜测是某种缓存问题。无论是缓存窗口本身,还是 URL 的结果,我都无法不调查就知道。我会尝试两件事,用一个随机名称命名窗口,每次点击它时都会改变,所以使用(new Date()).toString()(或类似的我没有测试过)而不是'_blank'。要尝试的第二件事是确保每次 URL 都是唯一的以避免在那里缓存,因此选择报告系统未使用的查询字符串变量并在每次单击时更改它,例如+ 'version='+(new Date()).toString().

如果您单击两次,此 jquery 弹出窗口代码有效,因此有助于确定哪些有效,哪些无效http://swip.codylindley.com/popupWindowDemo.html

其实你可以进行自己的测试,将弹出窗口中的 URL 更改为常规网站,看看它是如何工作的,如果它正常工作,你就知道它的内容不是窗口。

希望这能提供一个起点 - 不幸的是,如果无法重现问题,很难给出准确的答案。

【讨论】:

  • +1 非常感谢您的努力和建议。事实上,我确实尝试在每次请求报告时更改 URL,但是它不显示内容。就此而言,一旦报告窗口关闭,浏览器就不会打开任何 PDF 报告链接(来自我的 JSP 应用程序)。如果我在单独的选项卡上打开一些随机的 pdf URL,它会正确加载文件,现在我甚至可以生成我之前的报告(但只能生成一次).. 还有什么我可以尝试的吗?
  • 你试过每次给新窗口一个随机的新名字吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多