- 在线时间
- 813 小时
- 专家
- 0
- UID
- 465524
- 注册时间
- 2008-4-27
- 帖子
- 571
- 精华
- 0
- 积分
- 1033
- 居住地
- 广东省 深圳市
- 离线
- 379 天
专长: 前端制作,Javascript编程
- 帖子
- 571
- 体力
- 2056
- 威望
- 1
- 居住地
- 广东省 深圳市
|
还有一个估计由几个外国大师合作写的,实现同样功能。- /*
- * (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
- * Special thanks to Dan Webb's domready.js Prototype extension
- * and Simon Willison's addLoadEvent
- *
- * For more info, see:
- * http://www.thefutureoftheweb.com/blog/adddomloadevent
- * http://dean.edwards.name/weblog/2006/06/again/
- * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
- * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
- *
- *
- * To use: call addDOMLoadEvent one or more times with functions, ie:
- *
- * function something() {
- * // do something
- * }
- * addDOMLoadEvent(something);
- *
- * addDOMLoadEvent(function() {
- * // do other stuff
- * });
- *
- */
-
- addDOMLoadEvent = (function(){
- // create event function stack
- var load_events = [],
- load_timer,
- script,
- done,
- exec,
- old_onload,
- init = function () {
- done = true;
- // kill the timer
- clearInterval(load_timer);
- // execute each function in the stack in the order they were added
- while (exec = load_events.shift())
- exec();
- if (script) script.onreadystatechange = '';
- };
- return function (func) {
- // if the init function was already ran, just run this function now and stop
- if (done) return func();
- if (!load_events[0]) {
- // for Mozilla/Opera9
- if (document.addEventListener)
- document.addEventListener("DOMContentLoaded", init, false);
- // for Internet Explorer
- /*@cc_on @*/
- /*@if (@_win32)
- document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
- script = document.getElementById("__ie_onload");
- script.onreadystatechange = function() {
- if (this.readyState == "complete")
- init(); // call the onload handler
- };
- /*@end @*/
- // for Safari
- if (/WebKit/i.test(navigator.userAgent)) { // sniff
- load_timer = setInterval(function() {
- if (/loaded|complete/.test(document.readyState))
- init(); // call the onload handler
- }, 10);
- }
- // for other browsers set the window.onload, but also execute the old window.onload
- old_onload = window.onload;
- window.onload = function() {
- init();
- if (old_onload) old_onload();
- };
- }
- load_events.push(func);
- }
- })();
复制代码
[ 本帖最后由 zidanezhicong 于 2008-5-8 08:54 编辑 ] |
|