Предотвращение копирования текста на веб-странице
У меня есть приложение для викторины. Когда робот задает разные вопросы в чате, эти вопросы относятся к разным областям знаний. Пользователь, который сначала ответил на вопрос, получил баллы. Проблема в том, что некоторые пользователи отвечают на запросы в поисковых системах. Я хочу как-то запретить пользователям решать вопрос с веб-страницы и отвечать на запросы в Google.
Я даже не уверен, что это возможно, во всяком случае, у кого-то есть какие-то идеи.
Ответы
Ответ 1
Здесь:
Как отключить выделение выделения текста с помощью 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. Они могут по-прежнему использовать другие устройства, но они не смогут обманывать один компьютер.
Ответ 2
В теге div, в который вы вставляете свой вопрос, добавьте следующую строку кода:
<div id="test" onmousedown='return false;' onselectstart='return false;'>
Это предотвратит копирование всего, что находится внутри тегов...
Ответ 3
Нет хорошего способа сделать это. Мошенник сможет обойти почти все.
Единственное, что приходит на ум - это выводить вопросы как динамически генерируемые изображения. Это защитит от копирования. Вам нужно будет решить, какая часть защиты действительно есть, но самые короткие вопросы можно ввести в Google в кратчайшие сроки, не так ли?
Ответ 4
Вы также можете сделать страницу изображением вместо html/text.
Скопировать текст с изображения непросто. Он должен быть сохранен и OCR'd.
Ответ 5
Не могли бы вы разместить прозрачный PNG поверх элемента, который содержит вопрос/вопрос?
Ответ 6
Обратите внимание, что этот вопрос может быть найден через Google людьми, которые хотят переопределить правило без копирования через Greasemonkey script или тому подобное на стороне браузера.
В дополнение к выбору отключения, я видел следующую тактику, по крайней мере, на одном веб-сайте:
<body oncopy="return false" onpaste="return false" oncut="return false">...</body>
Ответ 7
Вы можете запросить каждый ответ с помощью Google, и если нет точного соответствия, очень вероятно, что пользователь набрал его сам, и вы можете предоставить баллы.
Ответ 8
Если вы используете 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);
});
Ответ 9
<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>