Как закрыть текущую вкладку в окне браузера? - PullRequest
380 голосов
/ 16 января 2010

Я хочу создать на веб-странице ссылку, которая закрывала бы активную в данный момент вкладку в браузере, не закрывая другие вкладки в браузере.
Когда пользователь нажимает ссылку закрытия, должно появиться предупреждающее сообщение с просьбой подтвердить его двумя кнопками «ДА» и «НЕТ». Если пользователь нажимает «ДА», закройте эту страницу и, если «НЕТ», ничего не делайте.

Как это можно сделать? Есть предложения?

Ответы [ 14 ]

441 голосов
/ 16 января 2010

Для этого вам понадобится Javascript. Используйте window.close():

close();

Примечание: подразумевается текущая вкладка. Это эквивалентно:

window.close();

или вы можете указать другое окно.

Итак:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

с HTML:

<a href="javascript:close_window();">close</a>

или

<a href="#" onclick="close_window();return false;">close</a>

Вы return false здесь, чтобы предотвратить поведение по умолчанию для события. В противном случае браузер попытается перейти по этому URL-адресу (а это, очевидно, не так).

Теперь параметры в диалоговом окне window.confirm() будут ОК и Отмена (не Да и Нет). Если вы действительно хотите Да и Нет, вам нужно создать модальное диалоговое окно Javascript.

Примечание: есть различия, специфичные для браузера, с вышеуказанным. Если вы открыли окно с помощью Javascript (через window.open()), то вы можете закрыть окно с помощью Javascript. Firefox запрещает вам закрывать другие окна. Я полагаю, что IE запросит у пользователя подтверждение. Другие браузеры могут отличаться.

234 голосов
/ 13 сентября 2013

Попробуйте это

<a href="javascript:window.open('','_self').close();">close</a>
64 голосов
/ 15 октября 2012

Этот метод работает в Chrome и IE:

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>
25 голосов
/ 10 июля 2015

Насколько я могу судить, это больше невозможно в Chrome или FireFox. Это все еще возможно в IE (по крайней мере, до Edge).

16 голосов
/ 20 декабря 2014

Это возможно. Я искал всю сеть для этого, но однажды, когда я принял участие в опросе Microsoft, я наконец получил ответ.

попробуйте это:

window.top.close();

это закроет текущую вкладку для вас.

6 голосов
/ 01 апреля 2015

В Chrome 41 у меня работает следующее:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

Я попробовал несколько идей для FF, включая открытие реальной веб-страницы, но, похоже, ничего не работает. Насколько я понимаю, любой браузер закроет вкладку или окно с помощью xxx.close (), если JS откроет действительно , но FF, по крайней мере, нельзя заставить закрыть вкладку, открыв новую содержимое этой вкладки.

Это имеет смысл, когда вы об этом думаете - пользователь вполне может не захотеть, чтобы JS закрывал вкладку или окно с полезной историей.

6 голосов
/ 24 сентября 2014

Попробуйте тоже. Работаю для меня во всех трех основных браузерах.

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
6 голосов
/ 11 февраля 2013

Успешно протестировано в FF 18 и Chrome 24:

Вставить в голову:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

Кредиты поступают на Маркос Дж. Дрейк .

1 голос
/ 16 апреля 2019

Что касается людей, которые все еще посещают эту страницу, вам разрешено только закрывать вкладку, которая открывается скриптом ИЛИ, используя тег привязки HTML с target _blank.Оба они могут быть закрыты с помощью

<script>
window.close();
</script>
0 голосов
/ 17 апреля 2019
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

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

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