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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top