2012-05-21 44 views
26

Tôi đã học được "window.location.hash" mới và đã thử trong mã jquery thay vì "window.location.href" và cả hai đều cho kết quả giống nhau.Sự khác nhau giữa "window.location.href" và "window.location.hash" là gì?

Mã là ở đây:

window.location.href = ($(e.currentTarget).attr("href")); 
window.location.hash = ($(e.currentTarget).attr("href")); 

sự khác biệt giữa chúng là gì?

+0

http://www.w3schools.com/jsref/obj_location.asp –

+0

Giá trị tài sản này có thể khác nhau trong các trình duyệt khác nhau. Một cách an toàn để có được thuộc tính băm sẽ thay vào đó sử dụng: 'var hash = (location.href.split (" # ") [1] ||" ");' – naXa

Trả lời

46

Đối với một URL như http://[www.example.com]:80/search?q=devmo#test

băm trả lại một phần của URL mà sau ký hiệu #, bao gồm các ký hiệu #. Bạn có thể nghe sự kiện hashchange để nhận thông báo về những thay đổi đối với băm trong trình duyệt hỗ trợ.

Returns: #test 

href trả về toàn bộ URL.

Returns: http://[www.example.com]:80/search?q=devmo#test 

Read More

2

hashhref là cả hai thuộc tính của đối tượng window.location. hash là một phần của URL từ # trên (hoặc một chuỗi rỗng nếu không có #), trong khi href là một chuỗi đại diện cho toàn bộ URL.

+1

Khá chắc chắn nó bao gồm ký tự '#'. –

+0

@AmirRaminfar Thật vậy: đã sửa chữa. – lonesomeday

2

Thuộc tính băm trả về phần neo của URL, bao gồm cả dấu băm (#).

7

thử nghiệm nó trên ví dụ http://stackoverflow.com/#Page

href = http://stackoverflow.com/#Page 
hash = #Page 
17

Một sự khác biệt quan trọng là window.location.hash được urldecoded, trong khi các định danh đoạn trong window.location.href không urldecoded.Nói cách khác:

window.location.hash.split('#')[1] != window.location.href.split('#')[1] 

Nếu URL là http://example.com/page#3%3D3 thì:

window.location.hash.split('#')[1] == '3=3' 
window.location.href.split('#')[1] == '3%3D3' 

Nói cách khác:

window.location.hash.split('#')[1] == decodeURIComponent(window.location.href.split('#')[1]) 
+2

Điều này đã không trả lời những gì tôi đến đây để tìm, nhưng điều này rất hữu ích để biết không ít hơn. Cảm ơn –

+0

Đã giải mã 'window.location.hash' có thể là lỗi trong trình duyệt của bạn, nhưng bây giờ tôi không thể tạo lại lỗi trong Chrome cũng như trong FireFox. Vì vậy, bạn phải cẩn thận khi sử dụng thuộc tính này vì giá trị có thể khác nhau trong các trình duyệt khác nhau. – naXa

-1

Dưới đây là ví dụ đơn giản cho sự khác biệt giữa window.location.hrefwindow.location.hash

Đối với URL http://www.manm.com/member/#!create:

  • href: http://www.manam.com/member/#!create
  • băm: #!create
Các vấn đề liên quan