`

一个跨平台的DOMContentLoaded的解决方案

阅读更多

一个跨平台的DOMContentLoaded的解决方案

 

文件名称:DOMContentLoaded.js
  1. function onContent ( f ) {
  2.     var a = onContent,
  3.      b = navigator . userAgent ,
  4.      d = document ,
  5.      w = window ,
  6.      c = "onContent" ,
  7.     e = "addEventListener" ,
  8.      o = "opera" ,
  9.      r = "readyState" ,
  10.      s = "<scr" . concat ( "ipt defer src='//:' on" , r, "change='if(this." , r, "==\"complete\"){this.parentNode.removeChild(this);" , c, "." , c, "()}'></scr" , "ipt>" ) ;
  11.      a[ c] = ( function ( o) {
  12.         return function ( ) {
  13.              a[ c] = function ( ) { } ;
  14.             for ( a = arguments . callee ; ! a. done; a. done = 1) f( o ? o( ) : o)
  15.         }
  16.     } ) ( a[ c] ) ;
  17.     if ( d[ e ] ) d[ e ] ( "DOMContentLoaded" , a[ c] , false ) ;
  18.     if ( / WebKit| Khtml/ i. test ( b) | | ( w[ o] & & parseInt ( w[ o] . version ( ) ) < 9) ) ( function ( ) { / loaded | complete / . test ( d[ r] ) ? a[ c] ( ) : setTimeout ( arguments . callee , 1)
  19.     } ) ( ) ;
  20.     else if ( / MSIE/ i. test ( b) ) d. write ( s) ;
  21. } ;

 

util.js:

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())
                    setTimeout(exec, 10);
                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);
        }
})();

function insertWBR(string, step){
    var textarea = document.createElement('TEXTAREA');
    textarea.innerHTML = string.replace(/</g,"&lt;").replace(/>/g,"&gt;");
    string = textarea.value;

    var step = (step || 5), reg = new RegExp("(\\S {" + step + "})", "gi");
    return string.replace(/(<[^>]+>)/gi,"$1<wbr/>").replace(/(>|^)([^<]+)(<|$)/gi, function(a,b,c,d){
        if(c.length < step) return a;
        return b + c.replace(reg, "$1<wbr/>") + d;
    });
}

分享到:
评论

相关推荐

    Dojo的一些学习资料

    1. **Dojo Toolkit**: Dojo Toolkit是一个开源的JavaScript库,旨在提供一站式解决方案,帮助开发者构建高性能、跨平台的Web应用。它包含了多个模块,如Dijit(UI组件)、Dojo Base(核心功能)、DojoX(扩展库)等...

    h5-loading.zip

    【标题】"h5-loading.zip" 提供的是一种在H5页面中实现加载特效的解决方案,适用于各种移动设备,包括iOS、Android等主流操作系统上的浏览器。这个压缩包中包含的核心文件名为 "h5-loading",这通常是一个JavaScript...

    播放flv格式视频js

    随着Flash Player逐渐被淘汰,开发者们转向了更现代、更跨平台的解决方案,如HLS、DASH等流媒体协议,但仍然有一些场景需要处理FLV视频。在这种情况下,我们可以利用开源库如Flv.js来实现在浏览器中播放FLV视频。 *...

    浅谈H5前端性能测试实践1

    H5因其灵活性、轻量化和跨平台特性,在各种业务场景中广泛应用,但其性能表现相较于原生应用常常略显不足。 一、H5页面加载过程 H5页面的加载可以分为以下几个步骤: 1. **加载网络请求**:Webview获取H5页面URL...

    perfectscrollbar轻量级的滚动条外观与mac上chrome的滚动条一样

    这款库不仅适用于桌面端,也支持移动端,确保了跨平台的一致性。通过简单的配置,开发者可以轻松地为任何可滚动元素添加自定义滚动条,从而提高网页的整体美感。 在使用`Perfect Scrollbar`时,首先需要在项目中...

    JS右下角广告代码(精简兼容版).

    JavaScript(简称JS)是一种广泛应用于网页和网络应用的编程语言,尤其在实现客户端交互效果方面具有重要作用。...开发者在使用或编写类似代码时,需充分考虑这些方面,以实现一个高效、易用且兼容的广告解决方案。

    CSharp代码与javaScript

    此外,对于实时双向通信,SignalR是一个很好的选择,它允许C#服务主动推送消息到JavaScript客户端。 3. **Web页面的生命周期与调用时机** 在Web环境中,JavaScript的执行主要在浏览器中,而C#代码运行在服务器上。...

    手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现

    这款插件旨在为设计师和开发者提供一个可以让移动站点的相册体验与原生应用程序相媲美的解决方案。兼容性是PhotoSwipe的一大亮点,它支持所有iPhone、iPad、Blackberry 6+以及主流桌面浏览器,其底层基于HTML、CSS和...

    esde.be

    综上所述,"esde.be"个人网站可能运用了JavaScript的各种特性,包括DOM操作、事件处理、异步通信等,以创建一个互动性强、用户体验良好的在线平台。了解并熟练掌握JavaScript的这些知识点,对于理解和构建类似的网站...

Global site tag (gtag.js) - Google Analytics