生活随笔
收集整理的這篇文章主要介紹了
easyui 页签
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
昨天開始搭后臺(tái)框架,到晚上的時(shí)候遇到了一個(gè)現(xiàn)在覺得挺可笑但是當(dāng)時(shí)一直很糾結(jié)很糾結(jié)的問題,這個(gè)問題剛剛解決出來,把它拿出來說說,讓自己長點(diǎn)兒記性,希望大家不要犯我這個(gè)錯(cuò)誤啊??在backstage.jsp頁面中我寫了一個(gè)方法,用于在指定位置添加面板(id為msg的地方)??function?addTab(t,h){??????if($('#msg').tabs('exists',t)){??????????$('#msg').tabs('select',t);??????}else{??????????$('#msg').tabs('add',{??????????????????title:t,??????????????????href:h??????????});??????}??}??在body方法中有一個(gè)超連接??<a?id="admins">查看管理員信息</a>??方法調(diào)用??$("#admins").click(function(){??????????????addTab('管理員信息','${?pageContext.request.contextPath}/backstage/admins/findAdmins.jsp');??????????});??findAdmins.jsp??<head>??<script>??$(function(){??????????????alert("------");??});??</script>??</head>??<body>??????這是findAdmins.jsp頁面,事件觸發(fā)啦??<body>??我遇到的問題就是,當(dāng)添加面板時(shí),findAdmins.jsp中body中的內(nèi)容都會(huì)顯示,但head中的方法就是不執(zhí)行,剛開始覺得是路徑問題,但如果是路徑問題的話為什么body中的內(nèi)容能夠正確顯示呢???這個(gè)問題想得我頭疼啊,到底是為什么呢,就是想不明白??下面我來回答一個(gè)我自己的這個(gè)問題吧,其發(fā)生這種事情的主要原因還是因?yàn)槲液芏鄸|西都不知道,看的東西也比較少。??Href方式加載數(shù)據(jù)有幾個(gè)特點(diǎn):??第一個(gè)就是被加載的頁面只有body元素內(nèi)部的內(nèi)容才會(huì)被加載,也就是jQuery的ajax請求的只是html片段。(各位包括我自己,這種問題一定要注意啊)還有就是在加載遠(yuǎn)程url時(shí)有遮罩效果,也就是“等待中……”效果,用戶體驗(yàn)較好。???但是當(dāng)加載的頁面布局較為復(fù)雜,或者有較多的js腳本需要運(yùn)行的時(shí)候,編碼往往就需要謹(jǐn)慎了,容易出問題。下面說一些在網(wǎng)上找到的一個(gè)href的常見問題??1.href只加載目標(biāo)URL的html片段??這個(gè)特性是由jQuery封裝的ajax請求處理機(jī)制所決定的,所以目標(biāo)URL頁面里不需要有html,head,body等標(biāo)簽,即使有這些元素,也會(huì)被忽略,所以放在head標(biāo)簽里面的任何腳本也不會(huì)被引入或者執(zhí)行。??2.短暫的頁面混亂:??href鏈接的頁面比較復(fù)雜的時(shí)候,easyui對其渲染往往需要一個(gè)較長的過程,這時(shí)候,加載進(jìn)來的html片段毫無布局可以,過一會(huì)自動(dòng)會(huì)好,這時(shí)候easyui已經(jīng)完成對它的渲染。如何避免這個(gè)混亂的過程呢,還得靠easyui的一個(gè)基礎(chǔ)插件——解析器(Parser)。??Parser有個(gè)onComplete事件,這個(gè)事件就是指easyui對頁面完成渲染時(shí)觸發(fā),這樣思路就很清晰了:用一個(gè)div遮罩住讓被加載進(jìn)來的html片段,在onComplete事件中,讓這個(gè)div淡出,這時(shí)候渲染好的html片段就能美人出浴了,同時(shí)還整了個(gè)等待中的效果,一舉兩得。這樣要做兩件事:??第一是在要加載的html片段中放一個(gè)遮罩用的div:??<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%;">??????<image?src='style/images/loading.gif'/>???</div>??第二是在被加載的html片段尾部處理相關(guān)事件:??<script>??????function?show(){??????????$("#loading").fadeOut("normal",?function(){??????????????$(this).remove();??????????});??????}??????????var?delayTime;??????$.parser.onComplete?=?function(){??????????if(delayTime)???????????????clearTimeout(delayTime);??????????delayTime?=?setTimeout(show,500);??????}??</script>??需要注意的是,如果多個(gè)tab頁面都使用了onComplete事件,當(dāng)前定義的會(huì)覆蓋之前定義的。其實(shí)每次easyui渲染完成均會(huì)調(diào)用onComplete事件,所以每打開一個(gè)包含easyui控件的tab頁,onComplete事件就會(huì)被調(diào)用。??3.html片段的easyui組件相關(guān)腳本莫名地報(bào)錯(cuò):??其實(shí)這個(gè)現(xiàn)象是跟第一個(gè)現(xiàn)象的原因一樣的,easyui完成對html片段渲染需要一定的時(shí)間,頁面越復(fù)雜,耗時(shí)越長,這時(shí)候難以避免html存在的腳本存在對easyui某些插件的調(diào)用,比如datagrid等,這個(gè)時(shí)候就會(huì)報(bào)錯(cuò),解決方案同上,將這些腳本放到onComplete事件里處理,也就保證了渲染完成前,不會(huì)被執(zhí)行。??4.放在window里面表單驗(yàn)證的提示信息會(huì)亂串:??這個(gè)現(xiàn)象應(yīng)該是插件自身的bug,對位置的計(jì)算沒有考慮到這些特殊的事情,解決方式可以投機(jī)取巧,在打開window后,讓表單不符合驗(yàn)證的input獲得焦點(diǎn)就可以了。??content方式加載數(shù)據(jù)的特點(diǎn):??1.??比較靈活,你可以在腳本里面拼寫html代碼,然后賦值給tab的content屬性,不過這種寫法會(huì)使得代碼易讀性變差。???2.??可以把iframe賦給content,把一個(gè)iframe嵌入也就沒有什么不能完成的了。???3.??使用iframe會(huì)造成客戶端js重復(fù)加載,浪費(fèi)資源,比如說你主頁面要引用easyui的庫,你的iframe也要引用,浪費(fèi)就產(chǎn)生了。???希望能對大家有點(diǎn)兒幫助,不要再犯這種錯(cuò)誤啦!!
轉(zhuǎn)載于:https://www.cnblogs.com/Struts-pring/p/5138728.html
總結(jié)
以上是生活随笔為你收集整理的easyui 页签的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。