2010-03-16 46 views
10

Tôi có một câu hỏi, Trong ứng dụng web ASP.NET MVC của tôi, tôi phải thực hiện xác thực nhất định khi trang và tất cả các điều khiển đã được tải.Sự khác biệt giữa Window.load và document.readyState

Trong javascript tôi đang sử dụng dòng mã belwow để gọi phương thức.

window.load = JavascriptFunctionName ; 

Một số một từ đội của tôi yêu cầu tôi không được sử dụng trên dòng mã Thay vì sử dụng JQuery để làm như vậy

document.attachEvent("onreadystatechange", function() { 
     if (document.readyState === "complete") { 
      CheckThis(); 

     } 
    }); 

Xin hãy giúp tôi trong việc tìm hiểu sự khác biệt giữa hai là gì. Khi tôi kiểm tra bằng cách giữ cảnh báo trong cả hai kiểm tra Jquery là thực hiện đầu tiên và gọi chức năng CheckThis, nơi window.load là mất một thời gian và thực hiện sau khi nó. Vui lòng đề xuất

+0

Dưới đây là một cây bút cho thấy thứ tự trong đó tất cả các sự kiện cháy, jQuery tiếp cận isn' t nhất thiết phải là lựa chọn đúng trong mọi trường hợp: [codepen.io/pen/jagxdb](https://codepen.io/anon/pen/jagxdb?editors=0010). – Shikkediel

Trả lời

6

window.load - Điều này chạy khi tất cả nội dung được tải, bao gồm hình ảnh.

document.ready - Điều này chạy khi DOM sẵn sàng, tất cả các yếu tố đều có trên trang và sẵn sàng làm, nhưng hình ảnh không nhất thiết phải tải.

Đây là cách jQuery để làm document.ready:

$(function() { 
    CheckThis(); 
}); 

Nếu bạn muốn vẫn có nó xảy ra trên window.load, làm điều này:

$(window).load(function() { 
    CheckThis(); 
}); 
+2

['readyState' có 3 tùy chọn] (https://developer.mozilla.org/en/docs/Web/API/Document/readyState)' loading', 'interactive' và' complete', bạn đang nói về cái nào ở đây? 'complete' theo tài liệu có nghĩa là tất cả' tài nguyên phụ' (bao gồm cả hình ảnh tôi cho là ...) đều được tải. Sau đó, nó nói nó chỉ ra sự kiện 'load' đã được kích hoạt. – Alvaro

+0

Có thể cần cập nhật. Việc sử dụng tải như thế đã không được chấp nhận nhưng hiện đã bị xóa. – Shikkediel

3

window.load kích hoạt khi trang của bạn hoàn toàn tải (với hình ảnh , biểu ngữ, v.v.), nhưng document.readyState được kích hoạt khi DOM sẵn sàng

3

Trình xử lý sẵn sàng thực thi s ngay sau khi DOM được tạo, mà không cần đợi tất cả các tài nguyên bên ngoài được tải.

Vì bạn đã sử dụng jQuery, một ngắn gọn hơn, trình duyệt bất khả tri, và cú pháp được sử dụng rộng rãi cho nó là:

$(function(){ 
    CheckThis(); 
}); 
+0

cảm ơn anon-downvoter hahaha – heisenberg

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