每个浏览器都有页面功能(ctrl + F)。有没有办法在javascript中检测用户搜索,以便我可以附加其他操作。
答案 0 :(得分:6)
这是一个可以解决替代页面查找情况的解决方案(例如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;
}
});
jsFiddle,在Chrome,Safari和Firefox中测试
答案 1 :(得分:5)
你可以这样做(检测用户何时按ctrl + f):
window.onkeydown = function(e){
if(e.keyCode == 70 && e.ctrlKey){
//user pressed ctrl+f
}
在这里小提琴:http://jsfiddle.net/d8T72/
答案 2 :(得分:2)
当然,您可以尝试挂钩到ctrl+f
或cmd+f
快捷方式,但即使这适用于“某些”浏览器,这样您也只会知道用户按下了该快捷方式,最有可能搜索某些内容。
如果浏览器允许覆盖该快捷方式,则可以进一步阻止默认行为并在站点上实现您自己的搜索逻辑。但这被认为是非常糟糕的做法。覆盖本机浏览器行为非常糟糕。
另一方面,当浏览器执行搜索过程时,没有“事件”被触发。简而言之,不,实际上没有办法用javascript检测或挂钩搜索过程(如果有的话,它永远不会与浏览器兼容)。
答案 3 :(得分:2)
正如@Nicola Peluchetti最初建议的那样,这是一个稍微改进的版本,通过功能嗅探:
window.onkeydown = function(e){
var ck = e.keyCode ? e.keyCode : e.which;
if(e.ctrlKey && ck == 70){
alert('Searching...');
}
}