0

我们正在使用 javascript 开发一个 web 应用程序,我们使用 chrome 作为我们用户的默认浏览器。现在我们在应用程序中使用 window.open 时遇到了一个问题。

在我们的应用程序中,我们需要在新的浏览器选项卡中打开新页面,我们在js代码中使用了代码:window.open(' http : //ourUrl.com','_blank');

浏览器的动作根据这行代码的执行时间而有所不同。

情况1:用户点击了一个按钮,点击事件会触发我们的js函数,在这个函数中,直接执行这行代码,浏览器就可以在新的浏览器标签页中打开页面。(这就是我们想要的。)

情况2:用户点击了一个按钮,在按钮点击事件的处理函数中,我们首先通过ajax将页面数据提交给我们的服务器,在回调函数中,我们执行这行代码,可能会弹出一个独立的新窗口没有工具栏而不是浏览器选项卡。(这不是我们想要的)。

我不明白为什么浏览器的动作不同,任何人都可以帮忙解释一下吗?

谢谢。

4

1 回答 1

0

正如我在这个问题上解释的那样,为了在新选项卡(而不是新窗口)中打开 URL,必须在用户生成的操作回调的范围内调用window.open函数(例如,在onClick )
在任何其他情况下,URL 将在新窗口中打开。

解释您遇到的情况:
情况 1: window.open在用户生成的操作的回调中被调用。这就是它在新标签页中打开的原因。
情况 2:在这种情况下,window.open函数在 ajax 响应回调的范围内调用,这是用户生成操作的不同范围(上下文之外)。

对于打开新选项卡(而不是窗口)的第二种情况,您需要在用户单击后立即同步调用window.open,而不是作为另一个操作的回调(ajax 响应)。

于 2013-05-26T09:16:01.927 回答