Я использую диалоговый виджет jQuery для отображения модального поля. Однако при нажатии F5, в то время как модальное открыто, никакого обновления не происходит. Какая-либо идея?
Интересное обновление:
Попробуйте эту демонстрацию: http://jqueryui.com/demos/dialog/#modal-message Теперь, когда фокус идет "хорошо" кнопка, затем обновление (F5) работы, однако когда кнопка не имеет фокуса, затем это не делает.
Обновление 2
Мы можем на самом деле просто добавить любой вид управления к диалоговому окну, установить высоту и ширину к 0 CSS и установить внимание на него для получения работы обновления. Это не лучшее решение все же. Я все еще пытаюсь получить работу нажатия клавиши.
Обновление 3
Следующее, кажется, работает на данный момент:
$(document).keydown(function(e)
{
if (e.which == 116) // key code of the F5 button
{
document.location.reload();
}
});
Кажется, это обычная проблема, и я не вижу удовлетворительного ответа. Есть несколько похожих вопросов по переполнению стека, и лучший ответ, который я видел, это захват клавиш и запуск самого действия (это было для входа, запускающего кнопку, так что f5 обновить может быть сложнее) Я видел это и сам в проекте, над которым работаю.
Я подозреваю, что установка modal в false может помочь, но я еще не пробовал.
Я нашел это в строке 539 ui.dialog.js:
events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
Удаление клавиш и нажатие клавиш оттуда, казалось, позволяет работать обычным клавишам браузера. Теперь моя выглядит так:
events: $.map('focus,mousedown,mouseup,click'.split(','),
Я не знаю, какую функциональность я бы удалил, сделав это. Единственное место, где, похоже, используются события, это на линии 549:
$(document).bind($.ui.dialog.overlay.events, function(event) {
var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
return (dialogZ > $.ui.dialog.overlay.maxZ);
});
Было бы неплохо по возможности исправить это в официальной версии.
.Отображается ли диалоговое окно, перехватывающее событие нажатия клавиши F5 и останавливающее его распространение для 'F5'?
Проверьте код для перехвата подобного рода нажатий клавиш. Это многое объясняет!
У меня было подобное проблемы, но обнаружил, что вставил «return false;», который останавливал регистрацию всех других ключей. Например, «return false» ниже остановит распознавание всех других клавиш (например, F5), кроме xxx и yyy.
$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});
Так что просто уберите "return false".