【问题标题】:run window.open() in js performs different in chrome在 js 中运行 window.open() 在 chrome 中执行不同
【发布时间】:2013-03-19 01:36:24
【问题描述】:

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

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

根据这行代码的执行时间,浏览器的动作是不同的。

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

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

我不明白为什么浏览器的动作不一样,谁能帮忙解释一下?

谢谢。

【问题讨论】:

    标签: google-chrome tabs window window.open


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多