2010-04-03 154 views
50

我一直在研究一个网络应用程序和它的一部分,我需要打开一个新窗口。我在所有的浏览器上都可以正常工作,我的坚持点是Google Chrome。Google Chrome“window.open”解决方法?

铬似乎忽略了导致我问题的窗口功能,我正在努力的事情是我需要地址栏在新窗口中可编辑。 FF,IE,Safari和Opera做得很好,Chrome不行。

我的代码:

<script language="javascript" type="text/javascript"> 
<!-- 
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; 
} 

// --> 
</script> 

任何帮助将受到欢迎!在此先感谢:)

+0

哇 - 这很奇怪。我想,某种误导性的“安全”特征。 – Ray 2010-04-03 19:48:25

+0

是的,它是一个奇怪的,花了一些工作来得到这么远!大声笑 – Paul 2010-04-03 19:49:42

+2

这可能不是你想听到的,但不要在新窗口/选项卡中打开。如果用户想要一个新窗口,他们可以让他们的浏览器去做。 – jamesdlin 2010-04-03 19:56:25

回答

9

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

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

更新

设置statusbar=1正确的参数status=1作品对我来说

+0

感谢您的回复scunliffe :) 我刚刚尝试过这些设置和位置栏显示的URL,但仍然无法编辑:( – Paul 2010-04-03 20:11:02

+1

谢谢 - 我错过了状态= 1部分的参数,并已阻止铬将其视为一个全功能的window.open()。当我把它放入时,它开始打开标签中的窗口。 – 2011-03-03 02:00:11

5

我相信目前还没有JavaScript的办法强迫铬开在标签模式的新窗口。一张票已经在这里提交Pop-ups to show as tab by default。但用户可以点击左上角的铬图标并选择“显示为选项卡”,地址栏将变为可编辑。

javascript open in a new window not tab中询问过类似的问题。

+0

如果你在打开一个窗口时没有指定窗口属性,它应该把它放在一个标签中。相反,如果你想要打开一个窗口而不是一个标签,至少指定一个窗口属性 – nickytonline 2010-04-26 16:06:26

+1

OP的问题不在于打开一个新的窗口或标签,在chrome中,OP打开一个新窗口,但是位置栏显示为灰色,地址栏只能在新窗口显示为标签页时编辑 – Dingle 2010-04-26 18:34:24

+0

感谢您对丁格尔的输入,我可能能够解决这个问题ow;) – Paul 2010-04-29 14:55:38

15

这为我工作:

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

在Chrome 27中不起作用。 – feklee 2013-05-31 20:04:16

+1

这取决于它从哪里调用,请参阅下面的答案。 – Jeroen 2014-01-07 05:23:45

+0

对于我来说无法使用命名窗口(它将打开一个新窗口而不是现有窗口),无论它从何处调用@jeroen – charley 2017-11-13 15:55:18

2

不要把名字为目标窗口,当您使用window.open( “”, “姓名”,....)

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

3

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

+0

此解决方案在Google Chrome 29/Opera 20中可用,但在这些窗口中定位窗口两个浏览器(使用“left = XX&top = YY”)不能按预期工作。 (假设这两个浏览器都是bug) – 2014-04-08 12:06:51

25

其他答案已过时。 Chrome对于window.open的行为取决于它从何处被调用。另见this topic

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

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

+3

你知道是否有关于此的官方文档? – 2014-09-19 15:21:07

0

据我所知,如果你正在引用本地主机(比如,你在本地开发的网站),铬不能正常工作

这工作:

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

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

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

这并没有真正回答这个问题。如果您有不同的问题,可以通过单击[提问](https://stackoverflow.com/questions/ask)来提问。您可以[添加赏金](https://stackoverflow.com/help/privileges/set-bounties)在您拥有足够的[声誉](https://stackoverflow.com/help/)后吸引更多关注此问题什么声誉)。 - [来自评论](/ review/low-quality-posts/18301536) – 2017-12-19 22:07:07

+1

@cezar这不是一个新问题。请注意说“我找到了这个解决方案”的部分。 – showdev 2017-12-19 22:17:59