2011-07-13 17 views
9

que cada navegador tiene en la funcionalidad de la página (ctrl + F). ¿Hay alguna manera de detectar las búsquedas de los usuarios en javascript para poder adjuntar acciones adicionales?¿Hay alguna forma de detectar encontrar en las búsquedas de páginas en javascript

+0

Interesante pregunta; Nunca he escuchado que se haga esto, y no creo haberlo visto en acción, pero siento curiosidad ahora. – Pointy

+0

¿puedes escuchar un evento de pulsación ctrl + F? (o comando + F, etc.) o eso no funciona debido al diálogo de búsqueda? – jlb

+0

Bueno^F no es la única forma de iniciar una búsqueda: en Firefox es "/" (al menos, es para mí). – Pointy

Respuesta

2

Por supuesto, se puede tratar de gancho en ctrl+f o cmd+f acceso directo, pero incluso si eso funciona en "algunos" navegadores, de esa manera solo sabría que un usuario presionó ese atajo y es más probable que busque algo.

Si el navegador permite sobrescribir ese acceso directo, puede bloquear aún más el comportamiento predeterminado e implementar su propia lógica de búsqueda en el sitio. Pero eso se considera la mayoría de las veces como una muy mala práctica. Sobrescribir el comportamiento del navegador nativo es bastante malo.

Por otro lado, no hay un "evento" que se activa cuando un navegador ejecuta un proceso de búsqueda. En pocas palabras, no, en realidad no hay forma de detectar o conectar un proceso de búsqueda con javascript (si hay uno, nunca será compatible con cross browser).

+0

Como estaba interesado en el proceso de búsqueda, no solo contl + F, entonces tendré que vivir con esto. Gracias – Alexander

5

Usted podría hacer (para detectar whenb un ctrl usuario pulse + f):

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

violín aquí: http://jsfiddle.net/d8T72/

4

Aquí hay una solución que puede dar cuenta de situaciones de búsqueda de página alternativas (por ejemplo, Command + F, '/' en Firefox). Comprueba si alguna de estas teclas pulsa y establece un temporizador cuando ocurren. Si la ventana se ve borrosa poco después, se supone que se muestra el cuadro de diálogo Buscar.

Desventajas: no cuenta para el diálogo "Buscar" que se inicia a través del menú. No veo ninguna manera de estar seguro acerca de esta parte, ya que (hasta donde sé, al menos) la IU del navegador está fuera de los límites de JavaScript que se ejecuta dentro del 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, probado en Chrome, Safari y Firefox

2

Como inicialmente sugerida por @Nicola Peluchetti, aquí es una versión ligeramente mejorada por la característica oler:

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

Browser search test case »

Cuestiones relacionadas