Ale*_*der 12 javascript events find
每个浏览器都有页面功能(ctrl + F).有没有办法在javascript中检测用户搜索,以便我可以附加其他操作.
你可以做(检测用户按ctrl + f时):
window.onkeydown = function(e){
if(e.keyCode == 70 && e.ctrlKey){
//user pressed ctrl+f
}
Run Code Online (Sandbox Code Playgroud)
在这里小提琴:http://jsfiddle.net/d8T72/
这是一个解决方案,可以解决替代页面查找情况(例如Firefox上的Command + F,'/').它会检查这些按键中的任何按键,并在发生时设置定时器.如果窗口很快就会模糊,则会假定显示"查找"对话框.
缺点:不考虑通过菜单启动的"查找"对话框.我认为没有任何方法可以确定这一部分,因为(据我所知,至少)浏览器UI对于在DOM内部运行的Javascript是禁止的.
var keydown = null;
$(window).keydown(function(e) {
if ( ( e.keyCode == 70 && ( e.ctrlKey || e.metaKey ) ) ||
( e.keyCode == 191 ) ) {
keydown = new Date().getTime();
}
return true;
}).blur(function() {
if ( keydown !== null ) {
var delta = new Date().getTime() - keydown;
if ( delta >= 0 && delta < 1000 )
console.log('finding');
keydown = null;
}
});
Run Code Online (Sandbox Code Playgroud)
jsFiddle,在Chrome,Safari和Firefox中测试过
当然,您可以尝试连接ctrl+f
或快捷方式,但即使这适用于“某些”浏览器,这样您也只能知道用户按下了该cmd+f
快捷方式并且最有可能搜索某些内容。
如果浏览器允许覆盖该快捷方式,您可以进一步阻止默认行为并在网站上实现您自己的搜索逻辑。但大多数时候这被认为是非常糟糕的做法。覆盖本机浏览器行为是非常糟糕的。
另一方面,当浏览器执行搜索过程时,不存在触发的“事件”。简而言之,不,实际上没有办法用 JavaScript 检测或挂钩搜索过程(如果有的话,它永远不会跨浏览器兼容)。