easyui Layout布局进入界面后会有一个混乱的过程,然后一闪就正常显示


问题(参考:http://blog.csdn.net/zhgl7688/article/details/50970387 ,

http://blog.csdn.net/lcore/article/details/27588017):

进入主界面的时候,页面的并不是马上就展现,而是会有一个混乱的过程,之后一闪就又好了。

原因:就是因为easyui是在dom载入完毕之后才会对整个页面进行解析,当布局和组件比较多的时候,完整的解析组件就需要一个过程,就会出现短暂的界面混乱现象。

分析:easyui解析器$.parser.parse()控制着整个页面的解析,可以监听它解析完成事件,加遮罩层提醒等待。

解决办法:利用$.parser的onComplete 事件+载入遮罩。

1.遮罩层dom,要放在<Body>下的第一个:

<div id="loading" style="position:absolute;z-index:1000;top:0px;left:0px;width:100%;height:100%;background:#DDDDDB;text-align :center;padding-top:20%;">
     <h1><font color="#15428B">加载中....</font></h1>
</div> 

2.监听$.parser的onComplete,要放在该页面自定义<script>标签的第一个,在Jquery Easyui的引用之后第一个最好:

<script>
    var pc; 
    //不要放在$(function(){});中
    $.parser.onComplete = function () {
        if (pc) clearTimeout(pc);
        pc = setTimeout(closes, 1000);
    } 

    function closes() {
        $('#loading').fadeOut('normal', function () {
            $(this).remove();
        });
    }
</script>

 附:Parser(解析器)应用场景

        easyui根据class就能正常的渲染页面都是靠parser。通常情况下我们在开发的时候并不会用到解析器。下面来看看神马时候我们需要用到解析器。

1.自动调用parser

        最主要的运用场景,只要我们书写相应的class,easyui就能成功的渲染页面,这是因为解析器在默认情况下,会在dom加载完成的时候($(docunment).ready)被调用,而且是渲染整个页面。

2.手动调用parser

         需要手动调用的情况是:当页面已经加载完成,但是此时我们使用js生成的DOM中包含了easyui支持的class,并且我们也有将其渲染成easyui组件的需求。在这种情况下手动调用parser就不可避免了。

         以如下代码为例:

<div class="easyui-accordion" id="tt">
        <div title="title1">1</div>
        <div title="title2">2</div>
</div>

        当上述代码的生成在easyui渲染界面之后,由于easyui不会一直监听页面,所以该段代码并不会并渲染成“手风琴DIV”的样式,这时候就需要我们手动去结下了。不过这里需注意如下方面,上面也有提及。

  • 解析目标位指定DOM的所有子孙元素,不包好该DOM本身。因此正确的写法为:

        $parser.parser($('tt').parent());

        并非:

        $parser.parser($('tt'));

  • 尽量不要多次解析同一个DOM元素(ID),页面初始化就已经主动渲染过dom节点了,你再次手动解析该dom节点时该dom已经被parser重构,得到的DOM就并非是你料想的结果,该方式应该尽量避免。

附:

1.layout中必须存在center,但如果layout只存在center,不如直接用panel;
2.所有easyui的数据型控件,都应该放在easyui的容器组件中。如datagrid的父级应该是panel;
3.fit是根据父级容器撑满,效果不理想的时候记得找一下他爹;
4.easyui的容器组件,用html初始化更好,而数据控件,则一律用js初始化,可控性更好


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM