2012-04-09 6 views
7

Estoy trabajando en un software de tipeo en línea. En el software de tipeo, todo va bien, pero tengo el problema de usuarios deshonestos que posiblemente tipean el texto en el área de texto, lo copian, luego vuelven a cargar la página (restableciendo el temporizador) y la pegan de inmediato. Así que estaba pensando en utilizar algo como evt.preventDefault(); cuando javascript detecta la presión del botón ctrl/cmd junto con la clave C. Pero luego me di cuenta de que el usuario siempre podía ir a la barra de menú para presionar Edit -> Copy. Entonces me preguntaba, ¿hay un método de navegador cruzado para deshabilitar ambos métodos de copia?Método de navegador cruzado para evitar todos los métodos de copia de texto desde un área de texto?

+0

proporcionar su enlace al sitio web – Kamal

+0

@ think123: tengo una solución para su pregunta borrado anterior (¿cómo es que mi código PHP MySQL sólo muestra un td) –

+0

oh, eso está resuelto (creo). Lo siento por eso. – think123

Respuesta

4

Usted puede tratar de utilizar el siguiente código de jQuery:

$('input[type=text],textarea').bind('copy paste cut drag drop', function (e) { 
    e.preventDefault(); 
}); 
+0

ah, gracias por la edición. – selo

+0

Puedo preguntar, ¿qué hace el enlace (sección 'copiar pegar cortar' de su código? Gracias! – think123

+0

vincular la función conecta los controladores de eventos a sus elementos. "Copiar pegar cortar" nos dice, qué eventos deben desencadenar la función adjunta. – selo

1

Puede bloquear algunos eventos, pero la prevención de este tipo de comportamiento de usuario no es posible. El usuario siempre puede copiar texto del nodo DOM a través de la consola del navegador.

+0

Sí, porque todos saben cómo sacar la consola y comenzar a manipular dom – Esailija

+0

Oh DOM manipulación no es un problema, quiero decir si el usuario no entendió y manipulación del DOM, y solo sabía cosas como Editar -> Copiar y hacer clic con el botón derecho -> Copiar (el clic derecho no es un problema) y CTRL-C y CMD-C. Eso es lo que más me preocupa. – think123

+1

@ think123 que no funciona si 'previeneDefault()' de cortar/pegar/copiar eventos AFAIK – Esailija

2

Usted tal vez podría hacer algo como:

var txtArea = document.getElementById("YourTextAreaId"); 
txtArea.oncopy = function() { return false; } 
txtArea.onpaste = function() { return false; } 
txtArea.oncut = function() { return false; } 

Pero incluso entonces, el usuario puede copiar el contenido por otros medios, como se sugiere en su pregunta.

0

Enlazar los controladores de eventos y prevenir la función de portapapeles, como por ejemplo:

$('textarea').on('copy paste cut drag drop', function (e) { 
    e.preventDefault(); 
}); 
+0

@Downvoter, ¿hay algún problema con mi respuesta? Por favor explica para que pueda mejorarlo. – Starx

Cuestiones relacionadas