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
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.
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 ...
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?
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.
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>
Pourriez-vous placer un fichier PNG transparent sur l'élément contenant le quiz/la question?
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);
});
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.
<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>