我一直在开发一个网络应用程序,部分内容我需要打开一个新窗口。我有这个适用于所有浏览器,我的关键点是谷歌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;
}
答案 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);