我有一个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秒延迟 - 它将被视为新窗口。
对任何人都有意义吗?
答案 0 :(得分:1)
我能够弄清楚发生了什么。如果JS在用户启动事件后立即打开外部窗口(基本上是用户点击) - 它会被浏览器视为新选项卡。如果我为同一个按钮单击事件处理程序设置5秒延迟 - 它将被视为新窗口。
对任何人都有意义吗?