window.open(url)不同的行为 - 相同的代码,不同的时间

时间:2012-03-20 19:43:45

标签: javascript browser

我有一个ExtJs应用程序。当用户需要查看在服务器端生成的PDF报告时,我使用window.open()功能打开一个新链接。我为提供存储在Web服务器上的PDF文件的服务传递URL。

从两个不同的地方调用此函数:用户可以滚动报表列表并单击其中一个上的工具栏按钮并查看报表,或者用户可以执行报表,等待它生成,然后应用程序将自动显示它。两个场景之间的唯一区别 - 第二个是异步,报告打开的最后一步是从回调函数调用。

但这两种情况表现不同。第一个 - 将在Chrome中打开新标签,在Safari中,这不会被视为popup窗口。在第二种情况下 - 它将在新窗口中打开(当然在相同的浏览器中 - 所以配置完全相同)。

我很难弄清楚为什么行为会有所不同。

有什么想法吗?

更新:澄清 - 两者都是JS调用。一个是这样的:

buttonClick: function() {
   window.open('myreporturl');
}

其他更复杂但最后:

runReport: function() {
   store.on('load', function {
      window.open('myreporturl');
   });
   store.load();
}

Update2:我能够弄清楚发生了什么。如果JS在用户启动事件后立即打开外部窗口(基本上是用户点击) - 它会被浏览器视为新选项卡。如果我为同一个按钮单击事件处理程序设置5秒延迟 - 它将被视为新窗口。

对任何人都有意义吗?

1 个答案:

答案 0 :(得分:1)

我能够弄清楚发生了什么。如果JS在用户启动事件后立即打开外部窗口(基本上是用户点击) - 它会被浏览器视为新选项卡。如果我为同一个按钮单击事件处理程序设置5秒延迟 - 它将被视为新窗口。

对任何人都有意义吗?