這篇文章主要為大家展示了“l(fā)ayui如何實(shí)現(xiàn)多iframe頁(yè)面控制定時(shí)器運(yùn)行”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)ayui如何實(shí)現(xiàn)多iframe頁(yè)面控制定時(shí)器運(yùn)行”這篇文章吧。
創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、淳安網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為淳安等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。我們web頁(yè)面中有幾個(gè)頁(yè)面是有定時(shí)器在刷新的,并且查詢的內(nèi)容還不少,給服務(wù)器造成了不少壓力。這些接口已經(jīng)盡量?jī)?yōu)化,能放到緩存的都放到緩存。然后主管又提了一個(gè)需求,就是我們使用的是layui多標(biāo)簽iframe框架,當(dāng)不在某個(gè)頁(yè)面的iframe時(shí)不要執(zhí)行定時(shí)器。我覺(jué)得這是一個(gè)挺不錯(cuò)的提議,而且實(shí)現(xiàn)起來(lái)也不難。
粗略地考慮有兩個(gè)思路,一個(gè)是點(diǎn)擊標(biāo)簽時(shí)開(kāi)啟或關(guān)閉定時(shí)器,一個(gè)是定時(shí)器執(zhí)行時(shí)判斷所在的iframe是否隱藏,如果隱藏則不執(zhí)行定時(shí)器的方法。第一種維護(hù)麻煩,難免有錯(cuò)漏的情況,而且和別的iframe有聯(lián)系,不好。第二種邏輯判斷簡(jiǎn)單,只和定時(shí)器所在iframe有關(guān),雖然定時(shí)器一直在跑,不過(guò)只要里面的邏輯不執(zhí)行就行,重要的是減少給服務(wù)器的壓力。
那么怎么判斷定時(shí)器所在頁(yè)面是否隱藏呢?
獲取iframe所在元素的父元素,判斷是否有l(wèi)ayui-show類就好了。
function myInterval(func, time){ console.log("啟動(dòng)定時(shí)器",func,time); //點(diǎn)擊iframe對(duì)應(yīng)的標(biāo)簽則直接執(zhí)行定時(shí)器方法。不過(guò)注意,這里我默認(rèn)只執(zhí)行最后一個(gè)定時(shí)器方法,如果有多個(gè)定時(shí)器請(qǐng)自行更改。 top.$("li[lay-id='"+$(self.frameElement).attr("src")+"']").unbind('click').click(function(){ console.log(func,"方法調(diào)用"); func.call(); }); return setInterval(function(){ console.log("myInterval定時(shí)器調(diào)用"); if($(self.frameElement.parentElement).hasClass("layui-show")){ //判斷所在的頁(yè)面是否顯示 console.log(func,"方法調(diào)用"); console.log("定時(shí)器間隔"+time); func.call(); } }, time); }
以上是“l(fā)ayui如何實(shí)現(xiàn)多iframe頁(yè)面控制定時(shí)器運(yùn)行”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!