覆盖浏览器的搜索功能(CTRL + F),但重用其原生搜索字段

时间:2014-09-23 14:37:38

标签: javascript html html5 twitter-bootstrap user-experience

我想覆盖 CTRL + F,以便在HTML网页上提供自定义搜索功能。这可以通过以下方式轻松完成:

window.onkeydown = function(event) {
    if (event.ctrlKey && event.keyCode == 70) {
        event.preventDefault();          
        my_own_search();
    } }

然后我将无法使用浏览器的底部原生搜索字段(此处使用Firefox,法语):

Description

如何重复使用浏览器的原生bottam搜索文本框?

如果不可能,您建议使用Bootstrap创建一个贴在右上方的自定义文本框(如Chrome中的搜索栏)或底部(如Firefox中的搜索栏)?


另一个例子:Chrome中的 PDF查看器提供自定义搜索(=不是HTML页面上的常规搜索,而是适用于PDF文档的搜索),但使用浏览器的本机搜索字段:

enter image description here

3 个答案:

答案 0 :(得分:4)

我想因为这是一个旧线程,但此处标记的正确答案现在无效。我在过去两天在两个网站上看过这个,我很喜欢它。 Codepen.io为一:

命令/控制+ F在第一个窗格中,您将看到他们的自定义搜索。

如果您检查他们的代码,您可以看到他们有自定义事件,请在chrome开发工具(CDT)中为 CodeMirror-search-field 执行“搜索所有文件”

答案 1 :(得分:3)

您永远不应该从网站覆盖浏览器功能。如果可以的话,这是浏览器中的一个主要安全漏洞。

如前所述,可以为各个浏览器编写插件,但必须由用户安装(即他们授予您的覆盖权限)。否则你运气不好

答案 2 :(得分:1)

要覆盖搜索字段,您需要使用JavaScript密钥代码,使用如下数组:

// 74=j, 75=k, 78=n, 84=t,27=esc, 17=ctrl
var forbiddenCtrlKeys = new Array(74, 75, 78, 84, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16);
// 37=left_arrow, 39=right_arrow
var forbiddenAltKeys = new Array(37, 39, 27, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16);
// 8=backspace, 116=F5
var forbiddenSingleKeys = new Array(8, 116, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16);
// per le textbox 116=F5
var forbiddenTextBoxKeys = new Array(116, 27, 123, 91, 92, 44, 165, 18, 122, 78, 27, 17, 16);

key = window.event.keyCode; // IE

if (window.event.ctrlKey) { // CTRL
  isCtrl = true;
  isAlt = false
}

将密钥代码与您要禁用的密钥代码交换。

可以找到 here 的完整密码代码列表。