一个跨平台的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;
    });
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingapex1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值