Atualizar (F5) não funciona no jQuery diálogo
-
18-09-2019 - |
Pergunta
Eu estou usando o jQuery diálogo widget para exibir uma caixa de modal. No entanto, quando pressionando F5, enquanto o modal é aberta nenhuma atualização acontece. Alguma idéia?
Atualização interessante:
Tente esta demonstração: http://jqueryui.com/demos/dialog/#modal- mensagem Agora, quando o foco é sobre o botão "OK", então a atualização (F5) funciona, no entanto, quando o botão não tem o foco, então isso não acontece.
Update 2
Na verdade, podemos simplesmente adicionar qualquer tipo de controle para o diálogo, defina a altura ea largura de 0 css e definir o foco sobre ele para obter o trabalho de atualização. Esta não é a melhor embora solução. Eu ainda estou tentando obter trabalho tecla.
Update 3
A seguir parece funcionar para agora:
$(document).keydown(function(e)
{
if (e.which == 116) // key code of the F5 button
{
document.location.reload();
}
});
Solução
Este parece ser um problema comum e eu não vi uma resposta satisfatória. Há algumas perguntas semelhantes sobre estouro de pilha e a melhor resposta que eu vi é para capturar as chaves e disparar a ação a si mesmo (isso foi para entrar acionando um botão, então F5 para atualizar pode ser mais difícil) eu vi-me em um projeto que eu estou trabalhando muito.
Eu suspeito que modal configuração para false poderia ajudar, mas eu não tentei ainda.
Editar:
Eu encontrei este na linha 539 de ui.dialog.js:
events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
Retirar o keydown e keypress de lá parecia para permitir que as teclas normais do navegador para o trabalho. Agora o meu parecido com este:
events: $.map('focus,mousedown,mouseup,click'.split(','),
Eu não sei o que a funcionalidade eu teria removido fazendo isso. O único lugar os eventos parecem ser usado é na linha 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);
});
Seria bom para obter este corrigido na versão oficial, se possível.
Outras dicas
É a caixa de diálogo diabling a tecla F5, capturando o evento keypress e parar a sua propagação para o 'F5'?
Verifique o código para captura keypress deste tipo. Isso explicaria muito!
Eu tive problemas semelhantes, mas descobri que eu tinha colocado em um "falso retorno;", que foi parar todas as outras teclas sendo registrado. Por exemplo, a "falsa retorno" abaixo irá parar todas as outras chaves (como F5) sendo reconhecidos, exceto xxx e yyy.
$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});
Então, basta tirar o "falso retorno".
A solução é fácil, você só tem que se concentrar em um elemento de formulário da sua caixa de diálogo modal. Mais explicação sobre este ligação :