Desative chaves específicas no IE 6
-
09-06-2019 - |
Pergunta
Preciso desabilitar teclas específicas (Ctrl e Backspace) no Internet Explorer 6.Existe um hack de registro para fazer isso.Tem que ser o IE6.Obrigado.
Edição longa:
@apandit:Opa.Preciso ser mais específico sobre a coisa do backspace.Quando digo desabilitar backspace, quero dizer desabilitar a capacidade do Backspace de imitar o botão Voltar do navegador.No IE, pressionar Backspace quando o foco não está em um campo de entrada de texto equivale a pressionar Voltar (navegar para a página anterior).
Quanto à tecla Ctrl.Existem algumas páginas que possuem links que criam novas janelas do IE.Eu tenho o bloqueador de pop-up ativado, que bloqueia isso.Mas, clicar com Ctrl resulta no lançamento de uma nova janela.
Isto é para um aplicativo de quiosque, que atualmente é um aplicativo baseado na web.Os clientes não têm fundos neste momento para tornar seu quiosque de site amigável.Coisas como filtragem de URL e desativação do campo de entrada de URL já foram feitas.
Obrigado.
Solução
Para que propósito você precisa disso?Porque desabilitar o backspace seria um inferno para digitar urls ou e-mails, etc.
Poderíamos recomendar outras soluções alternativas se conhecêssemos melhor o problema.
EDITAR 1:
Este site parece ter algumas informações sobre como isso é feito.Não posso verificar no momento, mas vou dar uma olhada:http://www.ozzu.com/programming-forum/disable-key-and-back-t44867.html
Editar 2:
Este site possui alguns códigos-chave:http://www.advscheduler.com/docs/manual/type_sendkeys.htmlParece que BACKSPACE é 08.
EDITAR 3:
Encontrei mais alguns códigos para bloqueio, confira:
<script type="text/javascript">var sType = "keypress";</script> <!--[if IE]> <script type="text/javascript">sType = "keydown";</script> <![endif]--> <script type="text/javascript"> fIntercept = function(e) { // alert(e.keyCode); e = e || event.e; if (e.keyCode == 116) { // When F5 is pressed fCancel(e); } else if (e.ctrlKey && (e.keyCode == 0 || e.keyCode == 82)) { // When ctrl is pressed with R fCancel(e); } }; fCancel = function(e) { if (e.preventDefault) { e.stopPropagation(); e.preventDefault(); } else { e.keyCode = 0; e.returnValue = false; e.cancelBubble = true; } return false; }; fAddEvent = function(obj, type, fn) { if (obj.addEventListener) { obj.addEventListener(type, fn, false); } else { obj['e'+type+fn] = fn; obj[type+fn] = function() { obj['e'+type+fn](window.event); } obj.attachEvent('on'+type, obj[type+fn]); } }; fAddEvent(document, sType, fIntercept); </script>
Ok, agora você deve ter tudo o que precisa para fazer isso.Para desativar o retrocesso, o código-chave é 08.Você provavelmente pode usar o código que postei apenas com pequenas modificações ...:\
Experimente e veja se é o que você precisava.(Espero que você saiba como usar Javascript.)
Outras dicas
Você não pode fazer isso em uma página da web.Um dos principais objetivos de um navegador da web é proteger os usuários da Internet.Eles definem um conjunto muito específico de coisas que os sites podem fazer, e desabilitar botões não está na lista.
Por outro lado, se você for um administrador de rede e quiser apenas mexer com seus usuários, poderá fazer isso por meio de algum software de desktop.Mas eu não prenderia a respiração.
Estou usando esta solução jQuery (testada no Ie6 e no Firefox 3.6):
$(document).keydown(function(e) { var tag = e.target.tagName; var ro = e.target.readOnly; var type = e.target.type; var tags = { INPUT : '', TEXTAREA : '' }; if (e.keyCode == 8) {// backspace if (!(tag in tags && !ro && /text/.test(type))) { e.stopPropagation(); e.preventDefault(); } } });
espero que ajude alguém