2012-01-21 15 views
25

Ho un'applicazione per il quiz. Laddove il robot fa diverse domande in chat, queste domande appartengono a diverse aree di conoscenza. Utente che ha risposto alla domanda per primo, riceve punti. Il problema è che alcuni utenti googling rispondono. Voglio in qualche modo impedire agli utenti di rispondere alle domande dalla pagina web e alle risposte su Google.Prevenzione della copia del testo nella pagina Web

io non sono nemmeno sicuro che questo è possibile, in ogni caso, probabilmente qualcuno ha qualche idea

+3

Come state pianificando di impedire alle persone con una memoria funzionante di digitare materiale nei motori di ricerca? –

+0

La digitazione richiede molto più tempo. Durante la digitazione, verrà posta la domanda successiva allo schermo – Anton

+0

e, se non viene messa a fuoco o chiusa a schermo intero, la rileva e annulla il test per sempre. –

risposta

58

Qui: 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; 

non consentirla di essere in grado di rispondere quando l'evento onBlur della finestra viene licenziato. Possono ancora utilizzare altri dispositivi, ma non saranno in grado di imbrogliare sullo stesso computer.

+0

Nice, grazie – Anton

+0

Questo è anche un bene per mettere su contenitori div in cui è possibile visualizzare una mappa da Google Maps, MapQuest, ecc. –

+0

Impressionante. L'ho usato con un [plugin nebbioso] (http://nbartlomiej.github.io/foggy/) per nascondere il contenuto prima dell'abbonamento. – JacobLett

9

Non v'è alcun buon modo per fare questo. Un imbroglione sarà in grado di aggirare praticamente tutto.

L'unica cosa che viene in mente è generare le domande come immagini generate dinamicamente. Ciò proteggerebbe contro il copia-incolla. Dovrai decidere quanta protezione sia realmente, però - la maggior parte delle brevi domande possono essere digitate in Google in pochissimo tempo, no?

0

È possibile interrogare ogni risposta data con google e nel caso in cui non vi sia una corrispondenza esatta, è molto probabile che l'utente lo abbia inserito da solo e sia possibile concedere punti.

3

È possibile posizionare un PNG trasparente sopra l'elemento che contiene il quiz/domanda?

16

nel tag div in cui si incolla la tua domanda, aggiungere la seguente riga di codice:

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

Questo consentirà di evitare la copia di tutto ciò che è all'interno dei tag ...

4

Si potrebbe anche fare la pagina un'immagine invece di html/testo.

Non è facile copiare il testo da un'immagine. Dovrebbe essere salvato e OCR'd.

3

Si noti che questa domanda può essere trovata tramite Google da persone che desiderano ignorare una regola di non copia tramite uno script Greasemonkey o simili sul lato browser.

Oltre a selezionare invalidante, ho visto la seguente tattica in almeno un sito 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

Se si utilizza JQuery quindi utilizzare:

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"; 
} 

chiamata questa funzione in cui si desidera disabilitare.

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