2011-08-17 42 views

回答

17

而不是禁用查找功能,你可以让这个发现会找不到合适的字眼!一种方法是使用CSS content声明来注入单词。找不到它们:

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

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

你可以很容易地写一些Javascript来为你自动生成所有必要的CSS规则。

1

编号替换图像是最快和最安全的方法。 (除非你愿意切换到Flash/Java Applet /等)

+0

它可以覆盖默认浏览器快捷方式,并且有一些超过有效期的时间做到这一点。 ..只要拿JSfiddle或Google文档为例 – Blowsie 2011-08-17 13:10:36

+0

@Blowsie:这正是我提到“最安全”这个词的原因。如果您在网络游戏中以某种方式阻止密钥 - 通过在地址栏中写入“javascript:unblockingCode ...”,仍然可以轻松地解除密钥锁定。 – bezmax 2011-08-17 14:04:25

4

我不认为有一种方法可以完全禁用该功能,并且应该不是一种禁用它的方法。

但是可以确保一些文字不会被按Ctrl +˚F借它拿走的浏览器不考虑连续文本中找到。

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

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

请注意,此(也可能是所有其他工作解决方案)也将中断复制和粘贴的文字。

+3

有可能覆盖默认的浏览器快捷方式,并且还有一些比有效的时间还要快......只要以JSfiddle或谷歌文档为例 – Blowsie 2011-08-17 13:10:50

+0

我纠正了。不过,我认为@nickf的答案可能是最好的答案。 – 2011-08-17 13:12:03

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将会阻止浏览器在按下按键时执行任何操作。如果return false;还不够,您还可以使用e.preventDefault();来防止发生任何事情。

希望这有助于

+0

附加阅读: keycode测试页面在这里:http://asquare.net/javascript/tests/KeyCode.html 和一个jQuery控件插件,以帮助检测按Ctrl键和http:// www。 gmarwaha.com/blog/2009/06/16/ctrl-key-combination-simple-jquery-plugin/ – jammypeach 2011-08-17 10:55:25

+0

请注意,即使这样做,它也不会阻止用户进入菜单并选择“在页面中查找”从那里。或者如果他使用使用某种其他键组合搜索的区域设置,则可以使用其他快捷方式。 – 2011-08-17 10:57:40

7

您可以禁用大多数浏览器(IE9,火狐,Chrome,Opera)的键盘快捷键,但有人使用查找你不能阻止通过单击它在浏览器中。

下面是一些jQuery的供电的JavaScript做的:从http://caniuse.com/,在此功能定期刺激我采取

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

。在该网站上,它用于使CTRL + F在页面上执行自定义搜索,而不是完全禁用它。

2

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

如果你确实找到了这样做的方法,总会有人会绕过它的危险。编写页面可以比浏览器更好地工作。

55

代码

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

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

看看这里获取更多信息:Introduction to Shadow DOM

相关问题