2011-11-21 24 views
21

¿Cómo puede jQuery detectar cambios en una url?Cómo detectar cambios de URL con jQuery

Por ejemplo: si un usuario va a una página site.com/faq/ no se muestra nada, pero si va a site.com/faq/#open jquery lo detecta y hace algo.

+1

usted debe tener una mirada a la [Dirección jQuery Plugin] (http: //www.asual. com/jquery/address /) –

+2

@Sahil Supongo que quiere esto para que pueda usarlo en la carga de la página, por ejemplo para abrir una pestaña específica en un control de pestañas. Es una técnica útil para conocer. –

Respuesta

2

Prueba esto:

if (window.location.hash) { 
    // Fragment exists, do something with it 
    var fragment = window.location.hash; 
} 

Sólo como referencia, por parte de una URL especificada por el # que se llama un 'fragmento'

1

Si tiene una URL de site.com/faq/#open, entonces usted puede hacer

var hash = window.location.hash 

para obtener hash = 'open'

6

Si no, mire window.location.hash al cargar la página:

$(document).ready(function() { 
    if(window.location.hash === "open") 
    { 
     //Show something 
    } 
}); 

o se unen a la hashchange caso de la ventana:

$(document).ready(function() { 
    $(window).hashchange(hashchanged); 
}); 

function hashchanged() 
{ 
    //Show something 
} 
20

Usted puede utilizar el evento hashchange.
o integrar una jquery hashchange plugin

$(function(){ 

    // Bind the event. 
    $(window).hashchange(hashchanged); 

    // Trigger the event (useful on page load). 
    hashchanged(); 

}); 

function hashchanged(){ 
var hash = location.hash.replace(/^#/, ''); 
//your code 
} 
+2

Consulte también el [plugin jQuery BBQ] (http://benalman.com/projects/jquery-bbq-plugin/), aunque puede ser más complicado de lo que requiere el OP. – Blazemonger

+1

no existe tal cosa como $ (window) .haschange, y la pregunta es sobre detectar el cambio de URL no haschange. – OviC

+0

El '$ (ventana) .haschange' pertenece al plugin mencionado y la pregunta se ilustra con un ejemplo en el OP – UnLoCo

18

intenta esto

$(window).on('hashchange', function(e){ 
// Your Code goes here 
}); 

Su trabajo para mí

Cuestiones relacionadas