Usando jquery desativa atalhos de teclado?
-
09-06-2019 - |
Pergunta
Então meu site usa andré machado para exibir um texto dinâmico.O problema é que eu preciso que o usuário seja capaz de copiar e colar um texto.
Clique com o botão direito do mouse e selecionando copiar obras, mas Ctrl+C não (não há atalhos de teclado) e a maioria das pessoas usa Ctrl+C?Você pode ver um exemplo do que eu estou falando aqui.
Apenas vá para a "web" exemplos e clique em "inline".Aviso de atalhos de teclado não funcionam no "nesta página" exemplo.A única diferença entre os dois eu vejo é o jogador js eles usam."Inline", usa o html.js jogador e esta "página" usa iframe.js.Também, acredito que ele usa a biblioteca mootools.Qualquer idéias?
Solução
A melhor opção é desativar o teclado atalhos de navegação em tabs), definindo o "enableKeys" opção para false (ver nesta página).
Alternativamente, você poderia fazer o que Robby sugere e modificar o shadowbox.js arquivo mas só faça isso se você precisa ter o plugin de navegação do teclado.Eu acho que você deseja pesquisar para este bloco de código e modificá-lo de modo que ele só cancela o evento padrão, se um dos atalhos é usado (eu adicionei algumas quebras de linha e de recorte):
var handleKey=function(e){
var code=SL.keyCode(e);
SL.preventDefault(e);
if(code==81||code==88||code==27){
SB.close()
}else{
if(code==37){
SB.previous()
}else{
if(code==39){
SB.next()
}else{
if(code==32){
SB[(typeof slide_timer=="number"?"pause":"play")]()
}
}
}
}
};
Eu acho que você pode alterá-lo para o mais parecido com este:
var handleKey=function(e){
switch(SL.keyCode(e)) {
case 81:
case 88:
case 27:
SB.close()
SL.preventDefault(e);
break;
case 37:
SB.previous()
SL.preventDefault(e);
break;
case 39:
SB.next()
SL.preventDefault(e);
break;
case 32:
SB[(typeof slide_timer=="number"?"pause":"play")]()
SL.preventDefault(e);
break;
}
};
Isso deve impedir que as galerias de manipulador de eventos a partir de engolir todos os batimentos de teclas que não se preocupam.
Outras dicas
Este problema é causado por algum JavaScript que come eventos de teclado.Você pode pressionar a tecla escape, por exemplo, que está preso por um dos .js e faz com que a caixa de sombra para fechar.
Suas escolhas são para cortar através do arquivos e localizar o problema, ou não usar o flash.Boa sorte!
A solução é definir o enableKeys opção para false.No entanto, isso parece não funcionar em uma chamada open() para inline HTML.Ele faz o trabalho, no entanto, se você definir em seu init() chamada.