javascript - otro - ¿Cómo activar un evento solo cuando el usuario cambia la URL?
llenar inputs dependiendo del dato de otro input (2)
Estoy trabajando en una extensión de Chrome, quiero detectar cuando el usuario ha escrito una URL. Se acerca de:
chrome.tabs.onUpdated.addListener(eventLisenerObj.onUpdated);
Pero se llama siempre que se cambia la URL (por ejemplo, cuando la página se recarga automáticamente o el usuario hace clic en un enlace, etc.)
Deseo poder determinar que la URL solo fue modificada por el usuario al escribir una URL.
Puede echar un vistazo a $locationChangeSuccess
.
Puedes obtener el camino de esta manera:
var loc = $location.path();
Luego, al cambiar de loc
, puede adjuntar su función.
Puede obtener esta información utilizando el webNavigation.onCommitted
( MDN ) . El detector de eventos recibe una propiedad transitionType
( MDN ) , que tendrá diferentes valores ( MDN ) según la causa de la navegación. Los valores con los que actives dependerán de lo que desees exactamente . Por lo que describes, probablemente desees ''typed''
( MDN ) , pero posiblemente también ''generated''
( MDN ) , ''keyword''
( MDN ) y / o ''keyword_generated''
( MDN ) .
La lista de posibles valores se explica en la página de la API de historial de Chrome (aparecen en la página de webNavigation
web de Chrome, pero no se explican allí) (en MDN: TransitionType
) (texto de la página API de historial de Chrome):
"link"
El usuario llegó a esta página haciendo clic en un enlace en otra página."typed"
El usuario obtuvo esta página escribiendo la URL en la barra de direcciones. También se usa para otras acciones de navegación explícitas. Ver tambiéngenerated
( MDN ) , que se utiliza para los casos en que el usuario seleccionó una opción que no se parecía en nada a una URL."auto_bookmark"
El usuario llegó a esta página a través de una sugerencia en la interfaz de usuario, por ejemplo, a través de un elemento del menú."auto_subframe"
Navegación de bastidor auxiliar Este es cualquier contenido que se carga automáticamente en un marco que no sea de nivel superior. Por ejemplo, si una página consta de varios marcos que contienen anuncios, esas URL de anuncios tienen este tipo de transición. El usuario puede incluso no darse cuenta de que el contenido de estas páginas es un marco separado, por lo que puede no importarle la URL (ver tambiénmanual_subframe
( MDN ) )."manual_subframe"
Para navegaciones de bastidor auxiliar que el usuario solicita explícitamente y genera nuevas entradas de navegación en la lista de retroceso / avance. Es probable que un marco solicitado explícitamente sea más importante que un marco cargado automáticamente porque el usuario probablemente se preocupa por el hecho de que se cargó el marco solicitado."generated"
El usuario llegó a esta página escribiendo en la barra de direcciones y seleccionando una entrada que no parecía una URL. Por ejemplo, una coincidencia podría tener la URL de una página de resultados de búsqueda de Google, pero podría parecerle al usuario como "Buscar Google para ...". Estas no son exactamente las mismas que las navegacionestyped
( MDN ) porque el usuario notyped
ni vio la URL de destino. Ver tambiénkeyword
( MDN ) ."auto_toplevel"
La página se especificó en la línea de comando o es la página de inicio."form_submit"
El usuario completó los valores en un formulario y lo envió. Tenga en cuenta que, en algunas situaciones, como cuando un formulario usa un script para enviar contenido, el envío de un formulario no da como resultado este tipo de transición."reload"
El usuario volvió a cargar la página haciendo clic en el botón de recarga o presionando Intro en la barra de direcciones. Restauración de sesión y la pestaña cerrada Reapertura también usan este tipo de transición."keyword"
La URL se generó a partir de una palabra clave reemplazable que no sea el proveedor de búsqueda predeterminado. Ver tambiénkeyword_generated
( MDN ) ."keyword_generated"
Corresponde a una visita generada para una palabra clave. Ver tambiénkeyword
( MDN ) .
Para diferenciar algunos tipos de transiciones, además de los valores de transitionType
, también querrás mirar el TransitionQualifier
( MDN ) . Los valores posibles son (de la documentación de Chrome , que se describen de forma algo diferente en MDN ):
"client_redirect"
Uno o más redireccionamientos causados por JavaScript o etiquetas meta refresh en la página ocurrieron durante la navegación."server_redirect"
Uno o más redireccionamientos causados por encabezados HTTP enviados desde el servidor ocurrieron durante la navegación."forward_back"
El usuario usó el botón Adelante o Atrás para iniciar la navegación."from_address_bar"
El usuario inició la navegación desde la barra de direcciones (también conocida como Omnibox).