谷歌Chrome“window.open”解决方法?

时间:2010-04-03 19:07:36

标签: javascript google-chrome

我一直在开发一个网络应用程序,部分内容我需要打开一个新窗口。我有这个适用于所有浏览器,我的关键点是谷歌Chrome。

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;
}

9 个答案:

答案 0 :(得分:30)

其他答案已过时。 Chrome window.open的行为取决于调用它的位置。另请参阅this topic

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

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

答案 1 :(得分:23)

这对我有用:

newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");

答案 2 :(得分:9)

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

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

<强>更新

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

答案 3 :(得分:5)

我相信目前没有javascript方法强制Chrome在标签模式下作为新窗口打开。已在此处Pop-ups to show as tab by default提交了故障单。但是用户可以点击左上角的Chrome图标并选择“显示为标签”,然后地址栏就可以编辑了。

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

答案 4 :(得分:5)

菜单栏必须为0或0,才能在新窗口中打开谷歌浏览器而不是标签。

答案 5 :(得分:2)

使用window.open(“”,“NAME”,....)时,不要为目标窗口设置名称

如果你这样做,你只能打开一次。使用_blank等代替。

答案 6 :(得分:2)

据我所知,如果你引用localhost(例如,你在本地开发一个站点),chrome就无法正常工作

这有效:

var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("http://www.cnn.com/", "CNN_WindowName", strWindowFeatures);
}

这不起作用

var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("http://localhost/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}

http://localhost/webappFolder/Landing.do

加载时,这也不起作用
var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";

function openRequestedPopup() {
  windowObjectReference = window.open("/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}

答案 7 :(得分:0)

为什么这在 2021 年仍然如此复杂? 对我来说,我想在一个新的 chrome 窗口全屏打开,所以我使用了以下内容:

window.open("http://my.url.com", "", "fullscreen=yes");

这按预期打开了一个新的 chrome 窗口。如果没有最后的选项,它只会打开一个新标签

答案 8 :(得分:-1)

我遇到同样的问题,Chrome没有从代码(不是处理程序)打开一个新窗口 我找到了这个解决方案:

setTimeout(function () {
    window.open(
        url, 'name', 'toolbar=1, scrollbars=1, location=1,
        statusbar=0, menubar=1, resizable=1, width=800, height=600'
    );
}, 1);