Есть ли способ обнаружить поиск на странице поиска в javascript - PullRequest
11 голосов
/ 13 июля 2011

каждый браузер имеет функцию поиска на странице (Ctrl + F). Есть ли способ обнаружить пользовательский поиск в javascript, чтобы я мог прикрепить дополнительные действия.

Ответы [ 4 ]

6 голосов
/ 13 июля 2011

Вот решение, которое может учитывать альтернативные ситуации поиска страниц (например, Command + F, '/' в Firefox). Он проверяет любые из этих нажатий клавиш и устанавливает таймер, когда они происходят. Если вскоре окно размыто, то предполагается, что отображается диалоговое окно «Найти».

Недостатки: не учитывает диалог «Поиск», запускаемый через меню. Я не вижу никакой возможности быть уверенным в этой части, поскольку (насколько я знаю, по крайней мере) пользовательский интерфейс браузера запрещен для Javascript, работающего внутри DOM.

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

5 голосов
/ 13 июля 2011

Вы можете сделать (чтобы определить, когда пользователь нажимает Ctrl + F):

window.onkeydown = function(e){
   if(e.keyCode == 70 && e.ctrlKey){
    //user pressed ctrl+f
}

Fiddle здесь: http://jsfiddle.net/d8T72/

2 голосов
/ 13 июля 2011

Как изначально предлагал @Nicola Peluchetti, вот несколько улучшенная версия с помощью функции прослушивания:

window.onkeydown = function(e){
    var ck = e.keyCode ? e.keyCode : e.which;
    if(e.ctrlKey && ck == 70){
        alert('Searching...');
    }
}

Тестовый пример поиска в браузере "

2 голосов
/ 13 июля 2011

Конечно, вы можете попытаться зацепить в ctrl+f или cmd+f ярлык, но даже если это работает на "некоторых" браузерах, вы только знаете, что пользователь нажал на этот ярлык искорее всего, что-то ищет.

Если браузер позволяет перезаписать этот ярлык, вы можете дополнительно заблокировать поведение по умолчанию и внедрить собственную логику поиска на сайте.Но это считается в большинстве случаев очень плохой практикой.Перезапись собственного поведения браузера довольно плохая.

С другой стороны, не существует «события», которое запускается, когда браузер выполняет процесс поиска.Короче говоря, нет, на самом деле нет способа обнаружить или подключиться к процессу поиска с помощью javascript (если он есть, он никогда не будет кроссбраузерно-совместимым).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...