Google Chrome "window.open" обходной путь?

Я работаю над веб-приложением, и для его части мне нужно открыть новое окно. У меня это работает во всех браузерах, моя точка придерживается Google Chrome.

Chrome, похоже, игнорирует функции окна, которые вызывают у меня проблемы, то, с чем я борюсь, мне нужно, чтобы адресная строка редактировалась в новом окне. 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>

Любая помощь будет с благодарностью принята! Спасибо заранее:)

Ответ 1

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

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

Это выглядит как какая-то мера безопасности, хотя обоснование этого не совсем ясно.

Ответ 2

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

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

Ответ 3

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

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

Обновление

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

Ответ 4

Я считаю, что в настоящее время нет способа javascript, чтобы заставить chrome открываться как новое окно в режиме вкладок. Билет был представлен как здесь Всплывающие окна, которые будут отображаться как вкладка по умолчанию. Но пользователь может щелкнуть значок хрома в верхнем левом углу и выбрать "Показать как вкладку", тогда адресная строка станет редактируемой.

Аналогичный вопрос, заданный в javascript, открывается в новом окне, а не вкладке.

Ответ 5

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

Ответ 6

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

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

Ответ 7

Насколько я могу судить, хром не работает должным образом, если вы ссылаетесь на 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);
}

Ответ 8

У меня та же проблема, Chrome не открывает новое окно из кода (не обработчиков).
Я нашел это решение:

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