`

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

分享到:
评论

相关推荐

    domloaded检查何时加载DOM类似于DOMContentLoaded

    这个库通常用于那些希望避免直接使用原生事件的项目,因为它提供了更现代和一致的跨浏览器解决方案。Sindre Sorhus是一位知名的开源开发者,他的许多作品被广泛应用于JavaScript社区。 在实际应用中,“dom-loaded...

    Javascript封装DOMContentLoaded事件实例

    主要介绍了Javascript封装DOMContentLoaded事件实例,DOMContentLoaded是FF,Opera 9的特有的Event, 当所有DOM解析完以后会触发这个事件,需要的朋友可以参考下

    JS兼容所有浏览器的DOMContentLoaded事件

    主要介绍了JS兼容所有浏览器的DOMContentLoaded事件的相关资料,标准浏览器中,使用DOMContentLoaded事件即可实现我们的要求,注册事件处理函数也极为简单,感兴趣的朋友一起学习吧

    SelectMenu简洁易用多样的下拉菜单解决方案

    总之,`SelectMenu` 是一个强大且灵活的下拉菜单解决方案,为开发者提供了丰富的功能和定制空间,使得在网页中创建美观、易用的下拉菜单变得更加简单。合理运用`SelectMenu`,可以提升网站的用户体验和交互性,是...

    dom-loaded:检查DOM是否已像DOMContentLoaded一样加载

    加载了dom 检查DOM是否已像一样加载与DOMContentLoaded不同,这在加载DOM之后包含在内时也适用。安装$ npm install dom-loaded用法import domLoaded from 'dom-loaded' ;await domLoaded ;console . log ( 'The DOM ...

    JS、CSS以及img对DOMContentLoaded事件的影响

    然而,样式表加载会阻塞脚本执行,这意味着如果一个`&lt;script&gt;`标签紧跟在一个`&lt;link rel="stylesheet" ...&gt;`之后,页面解析和DOMContentLoaded事件的触发会等待样式表加载完成。 实验1表明,DOMContentLoaded事件并...

    页面加载等待遮罩JS.rar

    "页面加载等待遮罩JS.rar"这个压缩包提供了一个纯JavaScript实现的解决方案,它可以帮助我们快速地为网页添加这种功能。 首先,"遮罩层"是一种常见的前端设计技术,它的主要作用是在页面上覆盖一层半透明或全黑的...

    [removed] 加载完毕的问题及解决方案(上)

    在讨论页面加载完毕的问题及其解决方案时,首先需要明确两个概念:window.onload和DOMContentLoaded事件。window.onload事件会在页面上所有的内容(包括DOM、图片、样式表等)完全加载完毕后触发,而...

    [removed] 加载完毕的问题及解决方案(下)

    通过以上方式,开发者可以创建一个跨浏览器的解决方案,确保在页面加载完毕后正确执行所需的JavaScript代码。这在处理复杂的网页应用时尤为重要,因为它能保证所有的资源都已加载完毕,从而避免因资源未加载而导致的...

    javascript在IE和Firefox中兼容性问题

    JavaScript是Web开发中不可或缺的一部分,尤其在处理动态交互和页面逻辑时。然而,由于不同的浏览器在实现JavaScript...对于开发过程中遇到的具体问题,开发者应参考相关文档,进行实际测试,以便找到最佳解决方案。

    Dojo的一些学习资料

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

    h5-loading.zip

    这个压缩包中包含的核心文件名为 "h5-loading",这通常是一个JavaScript文件或者一个包含相关资源(如CSS样式、图片等)的文件夹。 在H5页面开发中,加载特效是提高用户体验的关键元素之一,尤其是在处理大量数据或...

    requirejs-domready-2.0.1-1.zip

    DOMReady 插件则是 RequireJS 的一个补充,它允许开发者在DOM完全准备就绪后才执行代码,避免了传统 `window.onload` 或 `document.DOMContentLoaded` 事件可能存在的延迟问题。 【描述】中的 "jamppa.zip" 指的是 ...

    关于Android HTML5 audio autoplay无效问题的解决方案

    在Android平台上开发HTML5应用时,开发者常常会遇到一个棘手的问题,那就是HTML5 `&lt;audio&gt;` 标签的 `autoplay` 属性在某些设备上无法正常工作。这个问题主要出现在Android 4.2及以上版本,由于系统为了提升用户体验...

    播放flv格式视频js

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

    snack:一个小型的、跨浏览器的 JavaScript 库

    小吃.js ...因为有时,您只需要一份零食。警告! 我不维护它,所以如果你使用它,你... 存储库中有一个 docs 文件夹。 只需在浏览器中打开docs/index.html或访问 。贡献/测试/构建零食子模块(选择引擎) 因为 Snack

Global site tag (gtag.js) - Google Analytics