Обновление (F5) не работает в диалоговом окне jQuery

StackOverflow https://stackoverflow.com/questions/2007545

  •  18-09-2019
  •  | 
  •  

Вопрос

Я использую виджет диалогового окна jquery для отображения модального окна.Однако при нажатии F5, когда модальное окно открыто, обновление не происходит.Есть идеи?

Интересное обновление:

Попробуйте эту демонстрацию: http://jqueryui.com/demos/dialog/#modal-messageТеперь, когда фокус находится на кнопке «ОК», обновление (F5) работает, однако когда кнопка не имеет фокуса, то и нет.

Обновление 2

На самом деле мы можем просто добавить любой элемент управления в диалоговое окно, установить высоту и ширину CSS на 0 и установить на него фокус, чтобы обновление заработало.Хотя это не лучшее решение.Я все еще пытаюсь заставить работать нажатие клавиш.

Обновление 3

Кажется, на данный момент работает следующее:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
Это было полезно?

Решение

Кажется, это распространенная проблема, и я не нашел удовлетворительного ответа.Есть несколько похожих вопросов о переполнении стека, и лучший ответ, который я видел, - это захватить клавиши и запустить действие самостоятельно (это было для ввода, вызывающего кнопку, поэтому обновление f5 может быть сложнее). Я видел это сам в проект, над которым я тоже работаю.

Я подозреваю, что установка модального значения 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».

Решение простое: вам просто нужно сосредоточиться на элементе формы модального диалогового окна.Больше объяснений по этому поводу связь :

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top