覆盖浏览器“查找”功能

时间:2010-05-03 19:52:46

标签: javascript find browser

我想知道是否可以使用JavaScript拦截或阻止用户使用浏览器的“查找”功能在页面上查找文本。 (相信我,我有充分的理由!)我猜测答案是“不”,超出明显的拦截Cmd / Ctrl + F.

第二个最佳解决方案是拦截突出显示浏览器在查找期间执行的文本。有没有办法在任何浏览器中执行此操作?

3 个答案:

答案 0 :(得分:5)

我认为,如果没有浏览器特定扩展的帮助。这是一个完全在JavaScript上下文之外的过程。

答案 1 :(得分:2)

如果你真的,绝对必须这样做 - 那么有一个(非常糟糕的)解决方案:将页面渲染为图像。

答案 2 :(得分:2)

要禁用查找功能的效果,可以使用此Jquery Plugin

也可以使用普通JavaScript进行操作,如下所示:

        function disableFind() {
            var all = document.getElementsByTagName("*");
            var end = false;
            for(let idx in all){
                let currentElement = all[idx];
                let html = currentElement.innerHTML;
                if(!html) continue;
                let newHTML = "";
                for(var i = 0; i < html.length; i++) {
                    newHTML += html[i];
                    if (html[i] == '<') end = true;
                    if (html[i] == '>') end = false ;
                    if (end == false) {
                        newHTML += '<span style="position:absolute; left:-9999px;">.</span>';
                    }
                    if (html[i] == ' ') newHTML += ' ';   // insert a space if the current character is a space
                }
                currentElement.innerHTML = newHTML;
            }


        }

此外,您可以使用以下代码防止CTRL / CMD + F的默认行为:

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