2011-07-13 13 views
9

każda przeglądarka ma znaleźć na stronie funkcji (ctrl + F). Czy istnieje sposób, aby wykryć wyszukiwania użytkowników w javascript, aby móc dołączyć dodatkowe działania.Czy istnieje sposób, aby wykryć wyszukiwanie na stronie wyszukiwania w javascript

+0

Ciekawe pytanie; Nigdy nie słyszałem o tym, co się stało, i nie sądzę, że kiedykolwiek widziałem to w akcji, ale teraz jestem ciekawy. – Pointy

+0

Czy możesz nasłuchiwać zdarzenia keypown Ctrl + F? (lub komenda + F itd.) lub czy to nie jest bańka z powodu okna wyszukiwania? – jlb

+0

Cóż^F nie jest jedynym sposobem zainicjowania wyszukiwania - w Firefoksie jest to "/" (przynajmniej dla mnie). – Pointy

Odpowiedz

2

Oczywiście można spróbować hakiem do ctrl+f lub cmd+f skrótu, ale nawet jeśli działa to w "niektórych" przeglądarkach, w ten sposób wiadomo tylko, że użytkownik nacisnął ten skrót i najprawdopodobniej szuka czegoś.

Jeśli przeglądarka pozwala na zastąpienie tego skrótu, można dalej zablokować domyślne zachowanie i zaimplementować własną logikę wyszukiwania w witrynie. Jest to jednak uważane za bardzo złą praktykę. Nadpisywanie natywnego zachowania przeglądarki jest całkiem niezłe.

Z drugiej strony nie ma "zdarzenia", które zostanie wywołane, gdy przeglądarka wykona proces wyszukiwania. Krótko mówiąc, nie, faktycznie nie ma sposobu, aby wykryć lub podłączyć się do procesu wyszukiwania z javascript (jeśli taki istnieje, to nigdy nie będzie kompatybilny z przeglądarką).

+0

Ponieważ interesowałem się procesem wyszukiwania, a nie tylko contl + F, więc będę musiał z tym żyć. dzięki – Alexander

5

Można to zrobić (w celu wykrycia whenb prasę użytkownik Ctrl + F):

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

Fiddle tutaj: http://jsfiddle.net/d8T72/

4

Oto rozwiązanie, które może uwzględniać alternatywne sytuacje odnajdywania strony (np. Command + F, "/" w przeglądarce Firefox). Sprawdza każdy z tych klawiszy i ustawia licznik czasu, gdy się pojawią. Jeśli okno zostanie wkrótce zamazane, wówczas zakłada się, że wyświetlane jest okno dialogowe Znajdź.

Wady: nie uwzględnia okna dialogowego "Wyszukiwanie" uruchamianego z menu. Nie widzę żadnej pewności co do tej części, ponieważ (o ile mi wiadomo przynajmniej) interfejs przeglądarki jest niedostępny dla JavaScriptu działającego wewnątrz 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, przetestowane w Chrome, Safari i Firefox

2

jak początkowo sugerował @Nicola Peluchetti, tutaj jest nieznacznie poprawiła wersja przez funkcję wąchania:

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

Browser search test case »

Powiązane problemy