2011-11-21 30 views
21

Làm cách nào để jQuery có thể phát hiện các thay đổi đối với url?Cách phát hiện thay đổi URL với jQuery

Ví dụ: Nếu người dùng truy cập trang site.com/faq/ không có gì hiển thị, nhưng nếu anh ấy truy cập site.com/faq/#open jquery sẽ phát hiện và thực hiện điều gì đó.

+1

Bạn nên có một cái nhìn tại [jQuery Địa chỉ Plugin] (http: //www.asual. com/jquery/address /) –

+2

@Sahil Tôi cho rằng anh ấy muốn điều này để anh ấy có thể sử dụng nó khi tải trang, ví dụ để mở một tab cụ thể trong điều khiển tab. Đó là một kỹ thuật tiện dụng để biết. –

Trả lời

2

Hãy thử điều này:

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

Chỉ cần để tham khảo, một phần của một url được chỉ định bởi các # được gọi là 'đoạn'

1

Nếu bạn có một url của site.com/faq/#open, sau đó bạn có thể làm

var hash = window.location.hash 

để có được hash = 'open'

6

Đơn giản chỉ cần nhìn vào window.location.hash trên tải trang:

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

Hoặc liên kết với sự kiện hashchange của cửa sổ:

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

function hashchanged() 
{ 
    //Show something 
} 
20

Bạn có thể sử dụng các sự kiện hashchange.
hoặc tích hợp một 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

Xem thêm [jQuery BBQ plugin] (http://benalman.com/projects/jquery-bbq-plugin/), mặc dù điều đó có thể phức tạp hơn so với OP yêu cầu. – Blazemonger

+1

không có thứ gì như $ (cửa sổ) .thay đổi, và câu hỏi là về việc phát hiện thay đổi URL không thay đổi. – OviC

+0

'$ (cửa sổ) .haschange' thuộc về plugin được đề cập và câu hỏi được minh họa bằng ví dụ bằng cách thay thế OP – UnLoCo

18

Hãy thử này

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

của nó làm việc cho tôi

Các vấn đề liên quan