Window.open将调用发送到servlet两次

时间:2018-01-01 12:32:38

标签: javascript servlets microsoft-edge window.open

我正在使用window.open在新窗口中显示pdf报告。 我的应用程序中有一个链接,点击时调用javascript函数。 在该函数内部,正在调用另一个函数来传递名称和相对url参数。此函数使用传递的参数调用window.open,如此

window.open(url,name,'toolbar=0,location=0,directories=0,status=0,menubar=1,scrollbars=1,resizable=1,width='+width+',height='+height);

这个url是一个servlet,它执行一些报告加载,然后从pdf文件写入输出流。 这在Chrome或Firefox中运行良好。但是,使用Microsoft Edge加载相同的报表时,新窗口将继续加载。当我调试它时,我发现相对url中的servlet被调用了两次。它首先被调用,它执行代码执行,刷新输出流。执行在其他浏览器中结束,但是有了edge,新窗口是空的,带有正确的url,然后另一个调用被发送到同一个servlet并执行重复。执行完成后,新窗口像以前一样是空的。 我尝试过SO的不同解决方案。 我被建议打开窗口没有网址,然后重定向/重新分配网址。 我不确定这是不是window.open的问题,或者其他一些东西在我的代码中行为不端。但如果它是代码,那么它在其他浏览器中如何正常工作。 我正在读这个调用是异步的,所以我认为这可能与它有关所以我寻找一个解决方案来同步发送一个window.open调用但是找不到方法而我认为它无法完成。 我已经尝试了很多看SO的选项,但无济于事。

1 个答案:

答案 0 :(得分:-1)

请看一下,好像是在IE的新版本中修复 https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7277069/