2012-01-21 11 views
25

Tengo una aplicación de prueba. Donde el robot hace diferentes preguntas en el chat, estas preguntas pertenecen a diferentes áreas de conocimiento. El usuario que respondió la pregunta primero, recibe puntos. El problema es que algunos usuarios buscan respuestas en Google. De alguna manera, quiero evitar que los usuarios resuelvan las preguntas de la página web y busquen respuestas en Google.Impedir copiar texto en la página web

Ni siquiera estoy seguro de que esto es posible, de todos modos, probablemente, alguien tiene alguna idea

+3

¿Cómo planea evitar que personas con una memoria en funcionamiento tipeen cosas en los motores de búsqueda? –

+0

Escribir requiere mucho más tiempo. Mientras escribe, la siguiente pregunta será – Anton

+0

hacer pantalla a pantalla completa, y si se sale de foco o salir de pantalla completa detectar eso y cancelar la prueba para siempre. –

Respuesta

58

aquí: How to disable text selection highlighting using CSS?

-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
-o-user-select: none; 
user-select: none; 

ellos Inhabilitarla de ser capaz de responder cuando se dispara evento onBlur de la ventana. Todavía pueden usar otros dispositivos, pero no podrán hacer trampa en la misma computadora.

+0

Bien, gracias – Anton

+0

Esto también es bueno para colocar divisiones de contenedores donde puede mostrar un mapa de Google Maps, MapQuest, etc. –

+0

Impresionante. Lo usé con un [brumoso complemento] (http://nbartlomiej.github.io/foggy/) para ocultar el contenido antes de la suscripción. – JacobLett

9

No hay una buena manera de hacer esto. Un tramposo podrá trabajar prácticamente en todo.

Lo único que se le viene a la mente es generar las preguntas como imágenes generadas dinámicamente. Eso protegería contra copiar y pegar. Sin embargo, tendrá que decidir cuánta protección realmente es: la mayoría de las preguntas breves se pueden escribir en Google en poco tiempo, ¿no?

0

Puede consultar cada respuesta dada con google y en caso de que no haya una coincidencia exacta, es muy probable que el usuario la haya tipeado por sí mismo y puede otorgar puntos.

3

¿Podría colocar un PNG transparente encima del elemento que contiene el cuestionario/pregunta?

16

En su etiqueta div donde se pega a su pregunta, agregue la siguiente línea de código:

<div id="test" onmousedown='return false;' onselectstart='return false;'> 

Esto evitará que la copia de lo que esté dentro de las etiquetas ...

4

También puede hacer la página una imagen en lugar de html/texto.

No es fácil copiar el texto de una imagen. Tendría que ser guardado y OCR'd.

3

Tenga en cuenta que esta pregunta se puede encontrar en Google por personas que quieren anular una regla de no copiar a través de una secuencia de comandos de Greasemonkey o similar en el lado del navegador.

Además de seleccionar incapacitante, he visto la siguiente táctica en al menos una página web:

<body oncopy="return false" onpaste="return false" oncut="return false">...</body> 
-1
<head> 
<script type='text/javascript'> 
var isCtrl = false; 
document.onkeyup=function(e) 
{ 
if(e.which == 17) 
isCtrl=false; 
} 
document.onkeydown=function(e) 
{ 
if(e.which == 123) 
isCtrl=true; 
if (((e.which == 85) || (e.which == 65) || (e.which == 88) || (e.which == 67) || (e.which == 86) || (e.which == 2) || (e.which == 3) || (e.which == 123) || (e.which == 83)) && isCtrl == true) 
{ 
alert('This is Function Disabled'); 
return false; 
} 
} 
// right click code 
var isNS = (navigator.appName == "Netscape") ? 1 : 0; 
if(navigator.appName == "Netscape") document.captureEvents(Event.MOUSEDOWN||Event.MOUSEUP); 
function mischandler(){ 
    alert('This is Function Disabled'); 
return false; 
} 
function mousehandler(e){ 
var myevent = (isNS) ? e : event; 
var eventbutton = (isNS) ? myevent.which : myevent.button; 
if((eventbutton==2)||(eventbutton==3)) return false; 
} 
document.oncontextmenu = mischandler; 
document.onmousedown = mousehandler; 
document.onmouseup = mousehandler; 
//select content code disable alok goyal 
function killCopy(e){ 
return false 
} 
function reEnable(){ 
return true 
} 
document.onselectstart=new Function ("return false") 
if (window.sidebar){ 
document.onmousedown=killCopy 
document.onclick=reEnable 
} 
</script> 
</head> 

<body> 
    <h2>Disable code right click and ctrl a, ctrl u, ctrl c, ctrl v key and f12 and select content code</h2> 
    <div> 
    Some text... 
    </div> 
</body> 
0

Si está utilizando jQuery luego usar:

function disableSelection(target){ 
    $(function() { 
     $(this).bind("contextmenu", function(e) { 
      e.preventDefault(); 
     }); 
    }); 
    if (typeof target.onselectstart!="undefined") //For IE 
      target.onselectstart=function(){return false} 
    else if (typeof target.style.MozUserSelect!="undefined") //For Firefox 
      target.style.MozUserSelect="none" 
    else //All other route (For Opera) 
      target.onmousedown=function(){return false} 
    target.style.cursor = "default"; 
} 

Llame a este función en la que desea deshabilitar.

$(document).ready(function(){ 
    disableSelection(document.body); 
}); 
Cuestiones relacionadas