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