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

Wow - это довольно странно. Я полагаю, какая-то ошибочная функция безопасности. – Ray

+0

Да, это странно, потребовалось некоторое время, чтобы забраться так далеко! lol – Paul

+2

Это, вероятно, не то, что вы хотите услышать, но не открывайте вещи в новых окнах/вкладках. Если пользователь хочет новое окно, он может попросить их браузер сделать это. – jamesdlin

ответ

9

Часть location=1 должна включать редактируемую панель местоположения.

В качестве побочного примечания вы можете удалить атрибут language="javascript" из своего сценария, поскольку он теперь устарел.

обновления:

Установка statusbar=1 на правильный параметр status=1 работает для меня

+0

спасибо за ответ scunliffe :) Я только что попробовал с этими настройками, и в строке местоположения отображается URL-адрес, но он еще не может быть отредактирован :( – Paul

+1

Спасибо - мне не хватало статуса = 1 часть параметров, и это предотвратило хром от обработки его как полнофункционального window.open(). Когда я его вставлял, он начал открывать окна в вкладках. –

5

Я считаю, что в настоящее время нет Javascript способа заставить хром, чтобы открыть в новом окне в режиме вкладок. Билет был отправлен, как здесь Pop-ups to show as tab by default. Но пользователь может щелкнуть значок хрома в верхнем левом углу и выбрать «Показать как вкладку», тогда адресная строка станет редактируемой.

Аналогичный вопрос задан в javascript open in a new window not tab.

+0

Если вы не укажете и свойства окна при открытии окна, он должен поместить его на вкладку Наоборот, если вы хотите открыть окно вместо вкладки, укажите хотя бы одно свойство окна. – nickytonline

+1

Проблема OP заключается не в том, чтобы открываться как новое окно или вкладка. В chrome OP открывает новое окно, но местоположение bar отображается серым цветом. Адресная строка доступна только для редактирования, когда новое окно «отображается как вкладка». – Dingle

+0

спасибо за вход Dingle, я мог бы работать вокруг этого ow;) – Paul

15

Это работает для меня:

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

Не работает в Chrome 27. – feklee

+1

Это зависит от того, откуда он вызван, см. Мой ответ ниже. – Jeroen

+0

не работает для меня с именованным окном (он открывает новое окно, а не существующее), независимо от того, где он вызывается из @jeroen – charley

2

Не помещайте имя целевого окна при использовании window.open ("", "NAME", ....)

Если вы сделайте это, вы можете открыть его только один раз. Используйте _blank и т. Д. Вместо.

3

menubar не должен, или 0, чтобы Google Chrome открывался в новом окне вместо вкладки.

+0

Это решение работает в Google Chrome 29/Opera 20, хотя расположение окон в этих два браузера (с использованием «left = XX & top = YY») работают не так, как ожидалось. (предполагается, что это ошибка в обоих этих браузерах) –

25

Другие ответы устарели. Поведение Chrome для window.open зависит от того, откуда он вызывается. См. Также this topic.

Когда window.open вызывается из обработчика, который был вызван действием пользователя (например, событие onclick), он будет вести себя аналогично <a target="_blank">, который по умолчанию открывается на новой вкладке. Однако, если window.open вызывается в другом месте, Chrome игнорирует другие аргументы и всегда открывает новое окно с не редактируемой адресной строкой.

Это похоже на некую меру безопасности, хотя обоснование этого не совсем ясно.

+3

Знаете ли вы, есть ли официальная документация об этом? –

0

Насколько я могу судить, хром не работает должным образом, если вы ссылаетесь Localhost (скажем, вы разрабатываете сайт локально)

Это работает:

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

Это не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав [Ask Question] (https://stackoverflow.com/questions/ask). Вы также можете [добавить щедрость] (https://stackoverflow.com/help/privileges/set-bounties), чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно [репутации] (https://stackoverflow.com/help/ Что-репутация). - [Из обзора] (/ review/low-quality-posts/18301536) –

+1

@cezar Это не новый вопрос. Обратите внимание на часть, в которой говорится: «Я нашел это решение». – showdev

Смежные вопросы