#javascript #jquery
#javascript #jquery
Вопрос:
я пытаюсь закрыть окно браузера с помощью клавиши ESC, но не знаю, почему self.close dos не работает.
это то, что я делаю (я пытаюсь использовать document
вместо body
, но ничего не меняется):
$('body').keydown(function(e) {
if(e.keyCode == 27){
alert(e.keyCode); // alert work fine ( 27 )
self.close();
}
});
чего мне не хватает?
Редактировать:
выполнение этой работы нормально:
$("#closeWindow").click(function(){
self.close();
});
Спасибо.
Комментарии:
1. JavaScript может закрывать только те окна, которые были открыты JavaScript.
2. почему, если я нажимаю на кнопку, самозакрывается работа?
3. На что
self
ссылается? Внимание к области видимости этой переменной.
Ответ №1:
Поскольку ваше предупреждение работает, я предполагаю, что self.close() не работает по соображениям безопасности.
Этот код является взломом, позволяющим обойти эту меру безопасности:
window.open('', '_self', '');
window.close();
Ответ №2:
Окна могут быть закрыты только с помощью javascript, если они были открыты с помощью javascript. Если окно, с которым вы работаете, не было открыто с помощью кода, вы не сможете закрыть его с помощью кода. Смотрите Описание раздела здесь: https://developer.mozilla.org/en/DOM/window.close В Интернете есть несколько старых хаков для решения этой проблемы, но большинство из них устарели в более поздних версиях браузеров.
Кроме того, вы захотите добавить keydown
событие document
, а не элемент body , и когда вы используете self.close()
, вам, вероятно, лучше использовать window.close()
, чтобы избежать путаницы с областью видимости — вы хотите, чтобы окно закрывалось, поэтому нет никакого вреда в том, чтобы быть явным.
Ответ №3:
Попробуйте $(document)
вместо этого. Нет объекта ‘body’, к которому вы могли бы подключиться.