Запретить копирование текста на веб-странице
У меня есть приложение для викторины. Там, где робот задает разные вопросы в чате, эти вопросы относятся к разным областям знаний. Пользователь, ответивший на вопрос первым, получает баллы. Проблема в том, что некоторые пользователи гуглят ответы. Я хочу как-то помешать пользователям справляться с вопросом с веб-страницы и гуглить ответы.
Я даже не уверен, что это возможно, во всяком случае, у кого-то есть какие-то идеи
9 ответов:
Здесь: Как отключить выделение текста с помощью CSS?
-webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none;
Запретить им отвечать, когда запускается событие onblur окна. Они все еще могут использовать другие устройства, но они не смогут обмануть на том же компьютере.
В тег div, в который вы вставляете свой вопрос, добавьте следующую строку кода:
<div id="test" onmousedown='return false;' onselectstart='return false;'>
Это предотвратит копирование всего, что находится внутри тегов...
Нет хорошего способа сделать это. Мошенник сможет обойти практически все.
Единственное, что приходит на ум, - это выводить вопросы в виде динамически генерируемых образов. Это защитит от копирования-вставки. Вам придется решить, насколько это действительно защита - большинство коротких вопросов можно быстро ввести в Google, не так ли?
Вы также можете сделать страницу изображением вместо html / текста.
Скопировать текст с изображения непросто. Его нужно было бы сохранить и распознать.
Обратите внимание, что этот вопрос может быть найден через Google людьми, которые хотят переопределить правило no-copy с помощью скрипта Greasemonkey или подобного на стороне браузера.
В дополнение к выбору отключения, я видел следующую тактику по крайней мере на одном веб-сайте:
<body oncopy="return false" onpaste="return false" oncut="return false">...</body>
Если вы используете JQuery, то используйте:
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"; }
Вызовите эту функцию там, где вы хотите отключить.
$(document).ready(function(){ disableSelection(document.body); });
Вы можете запросить каждый данный ответ с помощью google, и в случае, если нет точного совпадения, очень вероятно, что пользователь ввел его сам, и вы можете предоставить баллы.
<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>