layui多iframe頁面控制定時器運(yùn)行的方法
我們web頁面中有幾個頁面是有定時器在刷新的,并且查詢的內(nèi)容還不少,給服務(wù)器造成了不少壓力。這些接口已經(jīng)盡量優(yōu)化,能放到緩存的都放到緩存。然后主管又提了一個需求,就是我們使用的是layui多標(biāo)簽iframe框架,當(dāng)不在某個頁面的iframe時不要執(zhí)行定時器。我覺得這是一個挺不錯的提議,而且實(shí)現(xiàn)起來也不難。
粗略地考慮有兩個思路,一個是點(diǎn)擊標(biāo)簽時開啟或關(guān)閉定時器,一個是定時器執(zhí)行時判斷所在的iframe是否隱藏,如果隱藏則不執(zhí)行定時器的方法。第一種維護(hù)麻煩,難免有錯漏的情況,而且和別的iframe有聯(lián)系,不好。第二種邏輯判斷簡單,只和定時器所在iframe有關(guān),雖然定時器一直在跑,不過只要里面的邏輯不執(zhí)行就行,重要的是減少給服務(wù)器的壓力。
那么怎么判斷定時器所在頁面是否隱藏呢?

獲取iframe所在元素的父元素,判斷是否有l(wèi)ayui-show類就好了。
function myInterval(func, time){
console.log("啟動定時器",func,time);
//點(diǎn)擊iframe對應(yīng)的標(biāo)簽則直接執(zhí)行定時器方法。不過注意,這里我默認(rèn)只執(zhí)行最后一個定時器方法,如果有多個定時器請自行更改。
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定時器調(diào)用");
if($(self.frameElement.parentElement).hasClass("layui-show")){
//判斷所在的頁面是否顯示
console.log(func,"方法調(diào)用");
console.log("定時器間隔"+time);
func.call();
}
}, time);
}
以上這篇layui多iframe頁面控制定時器運(yùn)行的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript控制各種瀏覽器全屏模式的方法、屬性和事件介紹
瀏覽器全屏模式的啟動函數(shù)requestFullscreen仍然需要附帶各瀏覽器的js方言前綴,相信下面這段代碼需要你花大量的搜索才能湊齊:2014-04-04
微信小程序?qū)崿F(xiàn)列表滾動頭部吸頂?shù)氖纠a
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)列表滾動頭部吸頂?shù)氖纠a,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

