JavaScript открывается в новом окне, а не во вкладке - PullRequest
350 голосов
/ 07 апреля 2009

У меня есть поле выбора, которое вызывает window.open(url), когда элемент выбран. Firefox откроет страницу в новой вкладке по умолчанию. Однако мне бы хотелось, чтобы страница открывалась в новом окне, а не в новой вкладке.

Как мне это сделать?

Ответы [ 15 ]

2 голосов
/ 14 июля 2016

Я только что попробовал это с IE (11) и Chrome (54.0.2794.1 канарейка SyzyASan):

window.open(url, "_blank", "x=y")

... и он открылся в новом окне.

Это означает, что Клинт Пахл правильно сказал, что, указав один параметр, откроется новое окно.

- и, очевидно, он не должен быть допустимым параметром!

(YMMV - как я уже сказал, я тестировал его только в двух местах ... и следующее обновление может аннулировать результаты в любом случае)

ETA: Я только что заметил - в IE окно не имеет украшений.

1 голос
/ 03 ноября 2014

Я думаю, что это не проблема с целевыми свойствами html, но вы сняли флажок «открывать новые окна на новой вкладке вместо» на вкладке «вкладка» в меню «Параметры» Firefox. проверьте это и попробуйте снова.

enter image description here

0 голосов
/ 13 ноября 2018

Для меня решение было иметь

"location=0"

в 3-м параметре. Протестировано на последней версии FF / Chrome и старой версии IE11

Полный вызов метода, который я использую ниже (как мне нравится использовать переменную ширину):

window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
0 голосов
/ 12 ноября 2014

У меня был тот же вопрос, но я нашел относительно простое решение.

В JavaScript я проверял window.opener !=null;, чтобы определить, было ли окно всплывающим. Если вы используете какой-то похожий код обнаружения, чтобы определить, является ли окно, в котором вы отображаете сайт, всплывающим, вы можете легко "отключить его" , если хотите открыть " новое окно * с использованием новых окон JavaScript.

Просто поместите это в верхней части страницы, чтобы вы всегда были "новым" окном.

<script type="text/javascript">
    window.opener=null;
</script>

Я использую это на странице входа в систему моего сайта, чтобы пользователи не получали всплывающее окно, если они используют всплывающее окно для перехода на мой сайт.

Вы можете даже создать простую страницу перенаправления, которая делает это и затем переходит на URL, который вы ей дали. Что-то вроде

JavaScript на родительской странице:

window.open("MyRedirect.html?URL="+URL, "_blank");

А затем, используя небольшой javascript из здесь , вы можете получить URL и перенаправить на него.

JavaScript на странице перенаправления:

 <script type="text/javascript">
        window.opener=null;

    function getSearchParameters() {
          var prmstr = window.location.search.substr(1);
          return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
    }

    function transformToAssocArray( prmstr ) {
        var params = {};
        var prmarr = prmstr.split("&");
        for ( var i = 0; i < prmarr.length; i++) {
            var tmparr = prmarr[i].split("=");
            params[tmparr[0]] = tmparr[1];
        }
        return params;
    }

    var params = getSearchParameters();
    window.location = params.URL;
    </script>
0 голосов
/ 09 апреля 2013

ответил здесь . Но разместив его снова для справки.

window.open() не откроется в новой вкладке, если это не происходит при фактическом событии клика. В приведенном примере URL открывается при фактическом событии клика. Это будет работать при условии, что у пользователя есть соответствующие настройки в браузере.

<a class="link">Link</a>
<script  type="text/javascript">
     $("a.link").on("click",function(){
         window.open('www.yourdomain.com','_blank');
     });
</script>

Аналогичным образом, если вы пытаетесь выполнить ajax-вызов в функции щелчка и хотите открыть окно в случае успеха, убедитесь, что вы выполняете ajax-вызов с установленной опцией async : false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...