2012-02-28 35 views
10

Tôi cần phát hiện lần đầu tiên trang tải trong jQuery để tôi có thể thực hiện một số hành động chỉ khi trang tải lần đầu tiên người dùng điều hướng đến trang đó. Tương tự như mã phía máy chủ page.ispostbasck. Tôi đã thử nghiệm $ (tài liệu) .ready và nó cháy mỗi lần tải trang để điều này sẽ không cung cấp những gì tôi cần. Tôi cũng đã thử hàm jQuery Load - nó cũng kích hoạt mọi tải trang. Vì vậy, theo tải trang một ví dụ là tôi có một thẻ đầu vào HTML trên trang của nút loại và nó không cháy postback (như một nút asp.net) nhưng nó tải lại trang và cháy $ (tài liệu). Đã cóPhát hiện tải trang đầu tiên với jQuery?

Cảm ơn

+2

Bạn sẽ phải sử dụng các tập tin cookie anh chàng. –

Trả lời

6

Sự kiện không tồn tại chỉ kích hoạt khi trang được tải lần đầu tiên.

Bạn nên sử dụng jQuery's .ready() event và sau đó duy trì thực tế là bạn đã xử lý tải trang lần đầu tiên bằng phương pháp lựa chọn của bạn (ví dụ: cookie, biến phiên, bộ nhớ cục bộ, v.v.).

Lưu ý: Phương pháp này sẽ không bao giờ đánh lừa bằng chứng trừ khi bạn có thể lưu trữ thông tin này ở cấp người dùng trong DB. Nếu không, ngay sau khi người dùng xóa cookie của họ hoặc bất kỳ phương pháp nào bạn chọn, mã "lần tải đầu tiên" sẽ kích hoạt lại.

+4

Những gì anh ta nói. Jquery (và javascript nói chung) không có sự tồn tại vốn có giữa các lần tải trang. –

16

Bạn sẽ phải sử dụng cookie để lưu trữ thông tin nạp đầu tiên:

if (! $.cookie("cookieName")){ 
    // do your stuff 

    // set cookie now 
    $.cookie("cookieName", "firstSet", {"expires" : 7}) 
} 

Lưu ý: Trên ví dụ sử dụng jQuery Cookie plugin.

6

Tôi vừa gặp vấn đề này và đây là cách tôi xử lý nó. Theo dõi các lần đầu tiên tải trang bằng cách sử dụng một biến initialLoad:

var initialLoad = true; 

$(document).ready(function() { 
    ... 
    ... 
    ... 

    initialLoad = false; 

}); 

Sau đó, trong các chức năng khác, bạn có thể làm điều này:

if (initialLoad) { 
    //Do work that is done when the page was first refreshed/loaded. 
} else { 
    //Do work when it's not the initial load. 
} 

này hoạt động tốt đối với tôi. Nếu người dùng đã ở trên trang và một số hàm jQuery chạy, tôi bây giờ biết nếu người dùng đó vừa tải trang hoặc nếu họ đã ở trên trang.

+0

"Tôi đã thử nghiệm $ (tài liệu). Đã sẵn sàng và nó sẽ kích hoạt mỗi lần tải trang để điều này sẽ không cung cấp những gì tôi cần". - rõ ràng không phải những gì anh ta yêu cầu – ghosh

-2

Các giải pháp dễ dàng là sử dụng jQuery ‘Khi’ Plugin

$(element).once('class-name', function() { 
    // your javascript code 
}); 
Các vấn đề liên quan