2012-01-21 23 views
25

Mam aplikację quizową. Gdzie robot pyta o różne pytania na czacie, to pytanie należy do różnych dziedzin wiedzy. Użytkownik, który najpierw odpowiedział na pytanie, otrzymuje punkty. Problem polega na tym, że niektórzy użytkownicy googlują odpowiedzi. Chcę jakoś uniemożliwić użytkownikom radzenie sobie z pytaniami ze strony internetowej i szukanie w Google odpowiedzi.Zapobieganie kopiowaniu tekstu na stronie internetowej

Nie jestem nawet pewien, że jest to możliwe, i tak pewnie ktoś ma jakieś pomysły

+3

Jak planujesz powstrzymać ludzi od działającej pamięci od wpisywania treści w wyszukiwarkach? –

+0

Pisanie wymaga więcej czasu. Podczas pisania, kolejne pytanie zostanie zadane – Anton

+0

zrobić ekran na pełnym ekranie, a jeśli wyjdzie nieostre lub wyjść z trybu pełnoekranowego, wykryj to i anuluj test na zawsze. –

Odpowiedz

58

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

Disallow im być w stanie odpowiedzieć, gdy zdarzenie okna za onBlur jest zwolniony. Mogą nadal korzystać z innych urządzeń, ale nie będą mogły oszukiwać na tym samym komputerze.

+0

Dobrze, dziękuję – Anton

+0

Jest to również przydatne do umieszczania na pojemnikach div, w których możesz wyświetlać mapę z Map Google, MapQuest itp. –

+0

Awesome. Użyłem tego z [mglistą wtyczką] (http://nbartlomiej.github.io/foggy/), aby ukryć zawartość przed subskrypcją. – JacobLett

9

Nie ma dobrego sposobu, aby to zrobić. Oszuści będą mogli obejść praktycznie wszystko.

Jedyna rzecz, która przychodzi do głowy, to wyprowadzanie pytań jako dynamicznie generowanych obrazów. To chroniłoby przed kopiowaniem. Musisz jednak zdecydować, jaka jest naprawdę skuteczna ochrona - większość krótkich pytań można wpisać w Google natychmiast, prawda?

0

Możesz zapytać każdą daną odpowiedź za pomocą google, a jeśli nie ma dokładnego dopasowania, jest bardzo prawdopodobne, że użytkownik wpisze je samodzielnie i możesz przyznać punkty.

3

Czy możesz umieścić przezroczysty PNG na elemencie zawierającym quiz/pytanie?

16

w tagu div gdzie wklej ty na to pytanie, należy dodać następujący wiersz kodu:

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

Pozwoli to zapobiec kopiowaniu wszystkiego, co jest w znacznikach ...

4

Można również zrobić strona obraz zamiast html/text.

Nie jest łatwo skopiować tekst z obrazu. Musiałby być zapisany i OCR.

3

Należy zauważyć, że to pytanie może zostać znalezione przez Google przez osoby, które chcą zastąpić zasadą braku kopii za pomocą skryptu Greasemonkey lub podobnego po stronie przeglądarki.

Ponadto, aby wybrać wyłączenie, widziałem następującą taktykę w co najmniej jednej stronie:

<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

Jeśli używasz JQuery następnie użyć:

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

nazywają to funkcja, w której chcesz wyłączyć.

$(document).ready(function(){ 
    disableSelection(document.body); 
}); 
Powiązane problemy