it-roy-ru.com

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

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

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

358
Naveed

Вам понадобится 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() будут OK и Cancel (не Yes и No). Если вы действительно хотите Да и Нет, вам нужно создать модальное диалоговое окно Javascript.

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

425
cletus

Попробуй это

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

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

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

22
Guy Schalnat

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

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

window.top.close();

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

16
user3239333

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

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

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

HTML:

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

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

6
Julesfrog

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

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

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

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

6
Thailandian

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

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

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

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

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

0
pikax

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

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

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

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

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

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

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

0
calios

Это один из способов решения этой проблемы, объявить функцию 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>
0
Mohsin Chaudhari

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

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

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

0
Muhammad Osama