2009-02-24 27 views
7

Ai đó có thể chỉ cho tôi theo hướng móc sự kiện được tải DOM không?Làm thế nào để móc sự kiện được nạp DOM?

Về cơ bản, tôi muốn hiển thị trình tải trong khi đang tải trang (tôi không có nghĩa là yêu cầu Ajax - lần đầu tiên người dùng truy cập trang)?

Cảm ơn tất cả trước

Trả lời

10

Tất cả thư viện Javascript phổ biến đều có sự kiện "được tải DOM" bạn có thể sử dụng cho việc này.

Về cơ bản:

<html> 
<head> 
    <script> 
    // if using jQuery 
    $(document).ready(function() { $('#loading').hide(); }); 
    // if using Prototype 
    document.observe("dom:loaded", function() { $('loading').hide(); }); 
    </script> 
</head> 
<body> 
    <div id="loading">Loading...</div> 
    <!-- rest of page --> 
</body> 
</html> 
0

Chỉ cần để cung cấp một thay thế cho jQuery, YUI tổ chức sự kiện cung cấp một chức năng onDomReady() cho mục đích này là tốt. Dưới đây là các ví dụ từ trang web của họ:

<script type="text/javascript"> 

function init() { 
    YAHOO.util.Dom.setStyle("hidden_element", "visibility", ""); 
} 
YAHOO.util.Event.onDOMReady(init); 

</script> 
0

Cách thích hợp để làm điều này mà không có một thư viện (và thực sự, ngay cả với một thư viện, kể từ khi bạn đang làm việc với kịch bản chặn và IE không thể tiên đoán) là đặt một kịch bản tại rất end of the page:

onLoaded = function() {...}

onLoaded()

28

Nếu bạn không sử dụng một khuôn khổ, sử dụng DOMCon sự kiện tentLoaded:

document.addEventListener('DOMContentLoaded', function() { 
    // ... 
}) 
+1

Tuyệt vời! Mozilla có một tài liệu hay về điều này: https://developer.mozilla.org/en/DOM/DOM_event_reference/DOMContentLoaded – philo

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