(function(){ document.ready = function(fn){ if(typeof fn !== 'function'){ throw 'Fn is not a function!'; } function completed() { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); fn(); } // 通过判断readyState状态如果已经加载完成直接执行,否则通过加载事件监听,由事件触发执行 if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( fn ); } else { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); } } })();
提取于JQuery3.5.1的ready函数