你能检测到有人在使用浏览器的“查找”功能吗?

时间:2015-10-20 01:06:14

标签: javascript browser

我发现自己处于需要禁用浏览器的Find功能的情况......我正在编写Javascript用于将在亚马逊的Mechanical Turk上使用的Qualtrics调查。所以在我的情况下,如果一个人在他们的浏览器中使用Find功能,他们就是在作弊。既然你真的不能禁用浏览器功能(据我所知,除了禁用Ctrl + F之外,还能检测个人是否使用查找功能)?这样我可以警告他们这是作弊并且可能标记数据,以便研究人员知道该参与者试图欺骗调查。我无法找到关于此的任何信息,并想知道我是否在傻瓜的差事。如果我无法确定这个功能,那么我写的代码将毫无用处,因为数据的有效性将是可疑的。

2 个答案:

答案 0 :(得分:0)



var isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
var ctrlKey = isMac ? "metaKey" : "ctrlKey"; // Cmd-F on Macs, Ctrl-F on others
document.querySelector('input').addEventListener('keydown', function(evt) {
  if (evt.which == '70' && evt[ctrlKey]) {
    console.log("Hey! Cheater!");
  }
});

<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

<input>
&#13;
&#13;
&#13;

这将只记录Ctrl-F / Cmd-F按键。如果要完全禁用它,可以使用evt.preventDefault。不幸的是,没有办法检测菜单的使用:编辑 - &gt;查找不会触发此代码。

答案 1 :(得分:0)

实现此目的的一种方法是检测键盘按键事件:

$(window).keypress(function(event) {
    if (!(event.which == 70 && event.ctrlKey)) return true;
    alert("Ctrl-F pressed");
    event.preventDefault();
    return false;
});

值得注意的是,在Mac和其他键盘上,F键可能会识别为不同的键码。