我们正在使用javascript开发一个Web应用程序,我们使用chrome作为我们用户的默认浏览器。 现在我们在应用程序中使用window.open时遇到了问题。
在我们的应用程序中,我们需要在新的浏览器选项卡中打开新页面,我们在js代码中使用了代码:window.open('http://ourUrl.com','_ blank');
根据执行此行代码的时间,浏览器的操作会有所不同。
情况1:用户单击一个按钮,click事件将触发我们的js功能,在此功能中,直接执行此行代码,然后浏览器可以在新的浏览器选项卡中打开该页面。 (这就是我们想要的。) 情况2:用户点击了一个按钮,在按钮点击事件的处理程序中,我们首先通过ajax将页面上的数据提交给我们的服务器,而在回调函数中,我们执行这行代码,它可能会弹出一个没有工具栏而不是浏览器标签的独立新窗口。(这不是我们想要的)。我不明白为什么浏览器的动作不同,任何人都可以帮忙解释一下?
感谢。
答案 0 :(得分:0)
正如我在this question上所解释的那样,为了在新标签页(而不是新窗口)中打开URL,必须在范围内调用 window.open 函数。用户生成的动作回调(例如,在 onClick 的范围内)
在任何其他情况下,URL将在新窗口中打开。
解释您的体验:
情境1: window.open 在用户生成的操作的回调中被调用。这就是它在新标签中打开的原因
情境2:在这种情况下, window.open 函数在ajax响应回调的范围内调用,该回调是用户的不同范围(在上下文之外)生成的行动。
对于打开新选项卡(而不是窗口)的第二种情况,您需要在用户单击后立即同步调用 window.open ,而不是作为另一个操作的回调(ajax响应) )。