我想知道是否可以使用JavaScript拦截或阻止用户使用浏览器的“查找”功能在页面上查找文本。 (相信我,我有充分的理由!)我猜测答案是“不”,超出明显的拦截Cmd / Ctrl + F.
第二个最佳解决方案是拦截突出显示浏览器在查找期间执行的文本。有没有办法在任何浏览器中执行此操作?
答案 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();
});