2011-10-18 28 views
7

tầm quan trọng của các hash (#) ở đây là gì, như thế nào liên quan đến các tập tin .js:Hàm băm (#) có nghĩa là gì sau tệp .js?

<script src="foo.js#bar=1"></script> 
+3

Bạn thấy điều này ở đâu? Thông thường, một chuỗi truy vấn (ví dụ: 'foo.js? 123) được sử dụng làm" trình ngắt kết nối bộ nhớ cache ". Một băm có lẽ không nên ảnh hưởng đến bộ nhớ đệm. –

+0

@Ates Ngữ cảnh Goral: nút tương tự của facebook nhúng tập lệnh //connect.facebook.net/en_US/all.js#xfbml=1 – jsj

+0

Đối với tôi, có vẻ như facebook đang gửi một số tham số. Có lẽ trong all.js họ nhận được tham số này và sử dụng nó. – Krasimir

Trả lời

4

Hàm băm sau tập lệnh được tập lệnh được nhúng sử dụng để định cấu hình. Ví dụ, có một cái nhìn vào ví dụ được cung cấp (facebook):

1. window.setTimeout(function() { 
2. var a = /(connect.facebook.net|facebook.com\/assets.php).*?#(.*)/; 
3. FB.Array.forEach(document.getElementsByTagName('script'), function (d) { 
4.  if (d.src) { 
5.   var b = a.exec(d.src); //RegExp.exec on the SRC attribute 
6.   if (b) { 
7.    var c = FB.QS.decode(b[2]); //Gets the information at the hash 
8.    ... 

Trong kịch bản, mỗi <script> thẻ dòng 3 được kiểm tra cho lần xuất hiện dòng 5 của băm dòng 2 tại thuộc tính . Sau đó, nếu băm tồn tại dòng 6, hashdata được trích xuất dòng 7 và chức năng vẫn tiếp tục.

2

Nó có thể được sử dụng trong phạm vi tham chiếu .js tập đọc URL liệu và giải nén các tham số (sử dụng ví dụ: window.location và phân tích cú pháp sau số #).

3

Tôi không làm gì cả về tải tập lệnh. Những gì tôi đoán là, kịch bản tự tìm kiếm thẻ script riêng của mình, và chọn ra các mảnh sau khi băm (bar = 1), và sử dụng nó để cấu hình hành vi của nó bằng cách nào đó. Để làm điều này, họ có thể phải lặp qua tất cả các thẻ script và khớp với thuộc tính src.

0

Phần sau khi hàm băm trong URL được biết là fragment identifier. Nếu có, nó chỉ định một phần hoặc một vị trí trong tài nguyên hoặc tài liệu tổng thể. Khi được sử dụng với HTTP, nó thường chỉ định một phần hoặc vị trí trong trang và trình duyệt có thể cuộn để hiển thị phần đó của trang.

Liên quan đến tệp JavaScript, tác giả của chương trình có khả năng sử dụng nó như một phương thức để chuyển đối số cho tệp. Tuy nhiên, phương pháp này không nên được sử dụng. URL có thể chứa query strings phục vụ cùng một mục đích. Tuy nhiên, bạn không nên nhúng đối số vào URL của tệp JavaScript bởi vì đối với mỗi tập hợp tham số khác nhau, URL được lưu vào bộ nhớ cache một lần nữa, đó là một sự lãng phí bộ nhớ. Thay vào đó, tốt hơn là đặt chuỗi truy vấn trên URL của trang HTML có chứa tập lệnh. Điều này là do JavaScript có thuộc tính tích hợp để truy cập chuỗi truy vấn của trang web: location.search. Bạn có thể đọc thêm về nó here.