O assunto que quero compartilhar hoje é algo bem simples, mais simples até do que eu imaginava.
Hoje tive que bloquear as funções de Copy, Paste e Cut de um Textbox (ou Input) e logo fui fazendo uma funçãozinha Javascript para fazer isso. O que eu não sabia, talvez por não aparecer no Intellisense do Visual Studio, era que o DHTML (que é uma junção das tecnologias HTML e javascript) disponibiliza muitas outras funções alem de onclick's e onkeydown's. Existem diversos eventos já prontos que seriam úteis em casos como o meu, por exemplo. É só colocar em seu código HTML (Na sua página asp, aspx, etc) e pronto!
Vou colocar abaixo as duas maneiras de se fazer o tratamento de Copiar/Colar. Via função JavaScript (utilizando outros eventos DHTML's) e via DHTML com as funções prontas.
Via Javascript:
<script type="text/javascript">
function BloquearCopyPaste(e) {
var teclasBloqueadas = new Array('c', 'x', 'v');
var keyCode = (e.keyCode) ? e.keyCode : e.which;
var isCtrl;
if (window.event)
isCtrl = e.ctrlKey
else
isCtrl = (window.Event) ? ((e.modifiers & Event.CTRL_MASK) == Event.CTRL_MASK) : false;
if (isCtrl) {
for (i = 0; i < teclasBloqueadas.length; i++) {
if (teclasBloqueadas[i] == String.fromCharCode(keyCode).toLowerCase()) {
alert('Ctrl+C, Ctrl+V e Ctrl+X bloqueados');
return false;
}
}
}
return true;
}
function BloquearBotaoDireito(e) {
var isRight = (e.button) ? (e.button == 2) : (e.which == 3);
if(isRight) {
alert('Botão direito do mouse bloqueado!');
return false;
}
return true;
}
</script>
E no input teriamos algo parecido com isso:
<input type="text" onkeydown="return BloquearCopyPaste(event)" onmousedown="return BloquearBotaoDireito(event);" />
Via eventos DHTML:
<input type="text" onCopy="return false;" onPaste="return false;" onCut="return false;" />
Fica aí a dica. Vale a pena dar uma olhadinha na lista dos eventos DHTML antes de sair fazendo suas funções javascript!
Um abraço e até o próximo post!