-1

我有一个简单的在线游戏,人们必须回答问题。他们最多有 30 秒的时间来回答,我发现大多数人使用“复制和粘贴”来简单地将问题复制到谷歌搜索并在互联网上找到答案。或者他们也可以使用“选择文本”并使用人民币菜单项“在 Google 中搜索”。

我正在寻找的是一个很好的保护。鼠标按钮禁用无效,我不想限制复制其他内容。

我最好的想法是使用混合字符的字体。我只会用这种字体来提问,他们可以复制和粘贴用这种字体写的问题,但是当他们把它放到谷歌搜索行时会看到一团糟。

你认为它会起作用吗?或者你可以提出更好的想法?如果您认为混合字符字体是个好主意,我该如何制作这种字体?有什么工具可以做到这一点吗?

谢谢!

4

1 回答 1

1

您在这里无能为力。

当您复制并粘贴到浏览器的文本输入中时,特殊格式(样式)将丢失,并且只会粘贴字符。足够快的打字员可以手动输入。

  1. 你可以做的一件事——但社区可能会因为我的建议而开枪——是尝试利用这样一个事实,即当你在浏览器窗口上标记或失去焦点时,大多数浏览器(我熟悉: Chrome、FF 和 IE)会将计时器的时钟减慢到每 1 秒一次。因此,如果您设置一个快速计时器,例如每 1/10 秒,那么您可以通过将浏览器窗口置于后台来检查用户是否“作弊”(即,将选项卡切换到谷歌问题)。不幸的是,如果用户打开新窗口而不是切换选项卡,这将失败。

这是一些可以做到这一点的代码。它适用于 Chrome。没有在其他地方测试。

var msDelay = 100;
var pageInBackground = false;
var epoch = new Date();
var bgMonitor = setInterval(function() {
  var newEpoch = new Date();
  var lagMs = newEpoch - epoch;
  epoch = newEpoch;
  if (lagMs > msDelay * 2) {
    pageInBackground = true;
    alert("NO CHEATING! YOU SWITCHED TABS!");
    clearInterval(bgMonitor);
  }
}, msDelay);
<h2>QUESTION: WHO IS BURIED IN GRANT'S TOMB?</h2>

<h4>NO CHEATING! YOU CANNOT SWITCH TABS AND GOOGLE IT! OR ELSE!</h4>

<h3>HINT: TRY TO OPEN A NEW TAB</h3>

  1. 您可以做的另一件事,但可能比第一次尝试更容易失败,那就是挂钩到oncopy事件处理程序。此方法还禁用上下文菜单以避免右键单击搜索功能。例如:

document.getElementsByClassName('question')[0].oncontextmenu = 
  document.getElementsByClassName('question')[0].oncopy = 
    function(){alert("CHEATER!!!!"); return false;};
<h4 class='question'>QUESTION: WHO IS BURIED IN GRANT'S TOMB?</h4>

<h4>NO CHEATING! YOU CANNOT COPY THE QUESTION AND GOOGLE IT! OR ELSE!</h4>

你可以结合这些,也许完成你想做的事情。

根据我的经验,作弊者总是有优势的。你可能想以不同的方式解决这个问题——不是从技术的角度,而是从动机的角度。用户玩你的问答游戏的动机是什么?他们如何获得奖励?这是与其他玩家的时间赛跑吗?他们得到奖励积分吗?“作弊”能扣分吗?

于 2015-10-09T03:11:35.000 回答