2010-04-03 1002 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