Как закрыть текущую вкладку в окне браузера?

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

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

Ответ 1

Для этого вам понадобится 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 попросит пользователя подтвердить. Другие браузеры могут отличаться.

Ответ 2

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

<a href="javascript:window.open('','_self').close();">close</a>

Ответ 3

Этот метод работает в 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>

Ответ 4

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

Ответ 5

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

попробуйте следующее:

window.top.close();

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

Ответ 6

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

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>

Ответ 7

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

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

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

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

Ответ 8

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

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

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

HTML:

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

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

Ответ 9

Это один из способов решения одного и того же, объявите функцию JavaScript, подобную этой

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

Добавьте в HTML следующую строку для вызова функции с помощью <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>

Ответ 10

немного поздно, но это то, что я узнал...

window.close() будет работать только (IE является исключением), если окно, которое вы пытаетесь close() было открыто скриптом с использованием метода window.open().

Вы получите консольную ошибку: Скрипты могут не закрывать окна, которые не были открыты скриптом. как ошибка и больше ничего.

Вы можете добавить уникальный параметр в URL, чтобы знать, если страница была открыта из сценария (например, время) - но его просто хак, а не родная функциональность и потерпят неудачу в некоторых случаях.

Я не мог найти какой-либо способ узнать, была ли страница открыта из open() или нет, и закрыть не будет выбрасывать и ошибки. это НЕ напечатает "тест":

try{
  window.close();
}
catch (e){
  console.log("text");
}

Вы можете прочитать в MDN больше о функции close()

Ответ 11

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

Думайте о себе, пытаясь закрыть окно снова и снова, и оно не закрывается, поскольку выполняет часть " если нет " из вашего вопроса, которая называется "ничего не делать".

Это будет раздражать наверняка!

Ответ 12

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

<script>
window.close();
</script>

Ответ 13

<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

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

Ответ 14

Здесь вы можете создать такую ​​ссылку:

<a href="javascript:if(confirm('Close window?'))window.close()">close</a>