2011-08-11 46 views
6

我需要創建相當於jQuery的ready事件而不使用jQuery。它需要在儘可能多的瀏覽器上工作,並且不能搞亂body.onload處理程序(即,如果已經有處理程序集,函數不應覆蓋它)。我檢查了jQuery的代碼,但不明白它是如何工作的,因爲它使用了許多jQuery的函數。不使用jQuery的跨瀏覽器「準備就緒」事件?

有關如何做到這一點的任何建議?

編輯:我無法控制我的代碼將被插入的位置,這就是爲什麼它需要儘可能與現有的body.onload處理程序一起玩。這也意味着我不能確定代碼將被插入到頁面底部(很可能不會)。

+0

我建議試圖瞭解jQuerys是如何工作的,或檢查出其他框架的實現,例如mootools的。 – Loktar

+1

可能重複的[javascript:如何寫$(document).ready像沒有jQuery的事件](http://stackoverflow.com/questions/3989095/javascripthow-to-write-document-ready-like-event-without- jQuery) – Piskvor

回答

0

只需在底部包含您的<script>標籤即可。這樣,只有在所有其他內容完成加載後纔會加載。

+0

DOM是否真的準備好後,加載一切? –

+0

我相信是的。 jQuery通常是否等待圖像等完成加載完成? –

+0

@dotweb:它*可能* - 但我不會依賴這個,特別是如果涉及iframe。 – Piskvor

3

Smallest cross browser DOMReady code, ever.

<html> 
    <head> 
    <script> 
     var ready = function (f) { 
     (/in/.test(document.readyState)) ? 
      setTimeout('r(' + f + ')', 9) : 
      f(); 
     }; 
    </script> 
    </head> 
    <body> 
    <script> 
     ready(function() { 
     alert('DOM Ready!'); 
     }); 
    </script> 
    </body> 
</html> 
+0

已更新:那是怎麼回事? – shawndumas