web-dev-qa-db-fra.com

Empêcher la copie de texte dans une page Web

J'ai une application de quiz. Lorsque les robots posent différentes questions sur le chat, ces questions appartiennent à différents domaines de connaissance. L'utilisateur qui a répondu à la question en premier reçoit des points. Le problème, c’est que certains utilisateurs googuent leurs réponses. Je veux en quelque sorte empêcher les utilisateurs d'adapter la question d'une page Web et de chercher des réponses sur Google.

Je ne suis même pas sûr que c'est possible, de toute façon, probablement, quelqu'un a eu des idées 

31
Anton

Ici: Comment désactiver la sélection de texte surlignée avec CSS?

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

Empêchez-les de pouvoir répondre lorsque l'événement onBlur de la fenêtre est déclenché. Ils peuvent toujours utiliser d'autres appareils, mais ils ne pourront pas tricher sur le même ordinateur.

69
mowwwalker

Dans la balise div où vous collez votre question, ajoutez la ligne de code suivante:

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

Cela empêchera la copie de tout ce qui est dans les balises ...

20
Anuj Kaithwas

Il n'y a pas de bonne façon de faire ça. Un tricheur sera capable de travailler à peu près tout.

La seule chose qui me vienne à l’esprit est de produire les questions sous forme d’images générées dynamiquement. Cela protégerait contre le copier-coller. Vous devrez toutefois déterminer quelle protection est réellement utilisée. La plupart des questions brèves peuvent être saisies dans Google en un rien de temps, n'est-ce pas?

11
Pekka 웃

Vous pouvez également transformer la page en image au lieu de HTML/texte.

Il n'est pas facile de copier le texte d'une image. Il faudrait qu'il soit sauvegardé et OCR. 

5
Guest

Notez que cette question peut être trouvée via Google par les personnes qui souhaitent remplacer une règle de non-copie via un script Greasemonkey ou similaire du côté du navigateur.

En plus de sélectionner la désactivation, j'ai vu la tactique suivante sur au moins un site Web:

<body oncopy="return false" onpaste="return false" oncut="return false">...</body>
4
shiggity

Pourriez-vous placer un fichier PNG transparent sur l'élément contenant le quiz/la question?

3
Cornel Ghiban

Si vous utilisez JQuery, utilisez:

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

Appelez cette fonction là où vous voulez désactiver.

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

Vous pouvez interroger chaque réponse donnée avec Google. S'il n'y a pas de correspondance exacte, il est très probable que l'utilisateur l'ait saisie elle-même et vous pouvez attribuer des points.

0
Torbjörn
<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