Как открыть одно и только одно окно одним нажатием кнопки?

1
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
    <script>
        var win;
        $(document).on('click', '#okGoogle', function (event) {
            event.preventDefault();
            url = "http://www.google.com/";
            if (!win) {
                win = window.open(url, '_blank');
            }
            else {
                win.focus();
            }
        });
    </script>
</head>
<body>
    <button id="okGoogle">Ok Google</button>
</body>
</html>

Этот код работает отлично. Но когда вновь открытое окно закрывается, код не открывает его снова. Какие-либо предложения?

Теги:

1 ответ

2
Лучший ответ

Вам просто нужно проверить, закрыто ли окно, через его closed свойство.

if (!win || win.closed) {
    win = window.open(url, '_blank');
}

См. Рабочую скрипту здесь https://jsfiddle.net/c7q54ewt/

  • 0
    Спасибо, но Chrome только решение. Не работает на IE11 или Edge.
  • 1
    @Abhijeet: Ну, это также работает в Firefox (однако Firefox не нравится focus вызов). Я могу убедиться, что это не работает в IE11 (возвращаемое значение window.open равно null поэтому win всегда ложно), что не очень хорошо. У меня нет под рукой Edge. Я думаю, что это так близко, как вы собираетесь, не обновляя Google каждый раз, вместо того, чтобы просто фокусировать окно, не обновляя его. Надеемся, что в какой-то момент Edge поддержит возврат прокси-объекта окна и поддержит closed на нем объект.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню