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