谷歌浏览器“window.open”解决方法?

IT技术 javascript google-chrome
2021-01-18 00:57:28

我一直在开发一个网络应用程序,其中一部分我需要打开一个新窗口。我在所有浏览器上都有这个工作,我的症结在于谷歌浏览器。

Chrome 似乎忽略了导致我出现问题的窗口功能,我遇到的问题是我需要地址栏在新窗口中是可编辑的。FF、IE、Safari 和 Opera 可以做到这一点,而 Chrome 则不然。

我的代码:

function popitup(url) {
  newwindow=window.open(url, 'name', 'toolbar=1,scrollbars=1,location=1,statusbar=0,menubar=1,resizable=1,width=800,height=600');
  if (window.focus) {
    newwindow.focus()
  }
  return false;
}
6个回答

其他答案已过时。Chrome for 的行为window.open取决于它是从哪里调用的。另请参阅本主题

window.open从通过用户操作(例如 onclick 事件)触发的处理程序调用时,它的行为类似于<a target="_blank">,默认情况下在新选项卡中打开。但是,如果window.open在其他地方调用,Chrome 会忽略其他参数并始终打开一个带有不可编辑地址栏的新窗口。

这看起来像是某种安全措施,尽管其背后的基本原理尚不完全清楚。

不知道有没有相关的官方文档?
2021-04-04 00:57:28

这对我有用:

newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");
这取决于从哪里调用它,请参阅下面的答案。
2021-04-04 00:57:28
使用命名窗口(它打开一个新窗口而不是现有窗口)对我不起作用,无论它是从哪里从@jeroen 调用的
2021-04-13 00:57:28

location=1部件应启用可编辑的位置栏。

作为旁注,您可以language="javascript"从脚本中删除该属性,因为它现在已被弃用。

更新

设置statusbar=1为正确的参数status=1对我有用

谢谢 - 我错过了参数的 status=1 部分,这阻止了 chrome 将其视为功能齐全的 window.open()。当我把它放进去时,它开始在选项卡中打开窗口。
2021-03-30 00:57:28
感谢 scunliffe 的回复 :) 我刚刚尝试了这些设置,地址栏显示了 URL,但仍然无法编辑 :(
2021-04-07 00:57:28

菜单栏必须为 no 或 0,以便 Google Chrome 在新窗口而不是选项卡中打开。

此解决方案适用于 Google Chrome 29/Opera 20,尽管在这两个浏览器中定位窗口(使用“left=XX&top=YY”)无法按预期工作。(假设是这两个浏览器中的错误)
2021-03-30 00:57:28

我相信目前没有 javascript 方法可以强制 chrome 在选项卡模式下作为新窗口打开。已提交票证,如此处弹出窗口默认显示为选项卡但是用户可以单击左上角的 chrome 图标并选择“显示为选项卡”,地址栏就可以编辑了。

javascript open in a new window not tab 中提出的类似问题

OP 的问题不在于作为新窗口或选项卡打开。在 chrome 中,OP 正在打开一个新窗口,但位置栏是灰色的。地址栏仅在新窗口“显示为选项卡”时才可编辑。
2021-03-17 00:57:28
如果您在打开窗口时未指定和窗口属性,则应将其放在选项卡中。相反,如果您希望打开一个窗口而不是选项卡,请至少指定一个窗口属性。
2021-03-23 00:57:28
感谢您的输入 Dingle,我也许能够以某种方式解决这个问题;)
2021-03-26 00:57:28
@McBonio,请使用您的解决方法更新帖子,谢谢。
2021-04-14 00:57:28