是否可以在页面中禁用Ctrl + F?

时间:2011-08-17 10:47:15

标签: javascript html css browser

我有一个拼图网站,这是一种可怕的作弊方式。它只是部分可以,但可以吗? 我想到的是用图像替换字母,但比这更容易吗?

9 个答案:

答案 0 :(得分:71)

<强>代码

window.addEventListener("keydown",function (e) {
    if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) { 
        e.preventDefault();
    }
})

答案 1 :(得分:18)

不是禁用“查找”功能,而是可以使“查找”找不到单词!一种方法是使用CSS content声明来注入单词。找不到它们:

<div class="word-foobar"></div>

.word-foobar:before {
    content: "Foobar";
}

您也可以轻松编写一些Javascript来自动生成所有必要的CSS规则。

答案 2 :(得分:7)

您可以在大多数浏览器(IE9,Firefox,Chrome,Opera)中禁用键盘快捷键,但不能通过在浏览器中单击它来阻止某人使用“查找”。

以下是一些支持jQuery的JavaScript:

$(window).keydown(function(e){
    if ((e.ctrlKey || e.metaKey) && e.keyCode === 70) {
        e.preventDefault();
    }
});

取自http://caniuse.com/,此功能经常让我恼火。在该网站上,它用于使CTRL + F在页面上进行自定义搜索,而不是完全禁用它。

答案 3 :(得分:4)

我认为没有办法完全禁用该功能,并且应该不能禁用它。

然而你可以确保 Ctrl + F 找不到某些文字,因为它写的是浏览器没有考虑连续文本。

使用图像是一种相对简单的方法。

或者你可以随机化这些字母并用一些CSS魔法重新排列它们(不幸的是,我的CSS-fu太弱了,不能给出一个例子)。例如,如果你想“隐藏”单词“hello”,那么用单独的<div>中的每个字母写出“lehol”并应用一些CSS样式,以便视觉上字母的顺序正确。 / p>

请注意,这个(以及可能所有其他工作解决方案)打破文本的复制和粘贴。

答案 4 :(得分:3)

这是一个jQuery plugin,可以满足您的需求。

答案 5 :(得分:2)

我认为使用keydown可以实现这一点,但是从原则上讲,改变浏览器的行为方式是一个坏主意。虽然这对你来说更加痛苦,但是有一些字体替换技术可以让它变得更容易。

如果你确实找到了这样做的方法,那么总会有人有可能绕过它。除了浏览浏览器之外,将页面编写成工作要好得多。

答案 6 :(得分:1)

你可以用javascript做 - 这只是伪代码(用jQuery编写)因为我不确定如何同时监听ctrl和f,但是你明白了:

$(body).keypress(function(e)
{
    if (e.keyCode===17)
    {
        //ctrl has been pressed, listen for subsequent F press (keyCode 70)
        //if next keyCode===70
        return false;
    }
});

据我所知,像这样返回false会在按下按键时停止浏览器执行任何操作。如果e.preventDefault();不够,您也可以使用return false;来防止发生任何事情。

希望这有帮助

答案 7 :(得分:0)

没有。更换图像是最快速,最安全的方式。 (除非您愿意切换到Flash / Java Applet等)。

答案 8 :(得分:0)

为什么不使用Shadow DOM?这将允许搜索引擎或屏幕阅读器无法访问您的内容。并且具有为用户提供完全相同的行为的额外好处。

请点击此处了解详情:Introduction to Shadow DOM