【问题标题】:new window doesn't open as tab in Chrome新窗口未在 Chrome 中作为选项卡打开
【发布时间】:2012-03-25 22:41:56
【问题描述】:

我正在为 Chrome 构建的东西。

我想用window.open打开几个标签 (Chrome 会阻止它,但我可以启用它)。 但是 Chrome 将它们作为新窗口而不是标签打开!

由于某些不清楚的原因,我只找到了有关 opposite. 的信息 我怎样才能做到这一点?

如果是这样,我怎样才能在 Chrome 不阻止它们的情况下调用程序化标签打开?

编辑: 我看过一些帖子说这是不可能的,那是浏览器的偏好。 首先,我不知道如何设置该偏好! 其次,我看到有人声称他们做到了,那么该相信谁呢?

编辑 2: 我发现 Chrome 会打开新窗口而不是打开标签,因为它是一个 JavaScript 窗口打开而不是用户点击。 有谁知道我如何伪造真正的点击? 因为调用点击事件仍然算作非用户点击

【问题讨论】:

  • 新窗口的打开方式取决于客户端的设置。说他们强迫它的人在撒谎:)
  • 你能告诉我在 chrome 中哪里可以选择吗?
  • 也许它可以帮助你找到你正在寻找的东西google.com/chrome/intl/en/webmasters-faq.html
  • 正如 DanH 所建议的,它起作用。尝试提供代码示例,以便人们更好地了解您可能出错的地方!
  • 我出错的地方是它不是用户点击加载时打开的自动窗口。有什么办法可以绕过它?调用点击事件仍然不算作用户点击...

标签: javascript google-chrome tabs


【解决方案1】:

如果您的弹出窗口是由直接用户操作创建的(未被弹出窗口阻止程序阻止)并使用默认选项,它将在新选项卡中打开。如果您以编程方式创建它,它将作为新窗口打开。没有办法改变这种行为。

可以做什么,虽然这是一个非常糟糕的黑客,是在用户操作上创建弹出窗口,然后稍后使用对弹出窗口的引用将位置设置为最终目的地,比如以下:

<a href="javascript:;" id="testAnchor" />
var popup1 = null;

document.getElementById('testAnchor').onclick = function() {
    popup1 = window.open('about:blank', 'popup1');
}

  setTimeout(function() {
       popup1.location = 'LOCATION_ON_THE_SAME_ORIGIN_AS_THE_OPENER';

  }, 5000);

【讨论】:

  • 有人能指出 chrome 设置中我可以选择这个选项的位置吗?
  • @eric.itzhak 我误认为 Chrome 有此设置。这个设置要么在某个时候从 Chrome 中删除,要么根本就不是一个选项。无论如何,除非您为窗口指定自定义设置,否则 Chrome 将始终在新标签页中打开新窗口。
  • 但我没有指定它会作为新窗口打开
  • @eric.itzhak 我最初的测试是使用没有被浏览器的弹出窗口阻止程序阻止的弹出窗口。我已经更新了我的答案,以更具体地说明需要如何打开弹出窗口才能在新选项卡中创建。不幸的是,没有办法完全按照您的意愿行事。
  • 是的,这是一个非常糟糕的 hack,所以我会稍微改变一下我的计划。但是非常感谢您的好心先生!
【解决方案2】:

Chrome 添加“一个窗口”:https://chrome.google.com/webstore/detail/one-window/papnlnnbddhckngcblfljaelgceffobn

自动将新窗口和弹出窗口作为选项卡移动到主窗口。所以它永远不会超过一个单独的窗口打开。

【讨论】:

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