背景:乙個賬號下有多個商戶,且登入狀態後端儲存,當前賬號資訊存在localstorage中
第乙個想法:乙個事件storge當localstorage裡的值發生變化時觸發,(可以不在當前頁面觸發)
window.addeventlistener('storage', (e) =>
}});
在谷歌瀏覽器是沒有問題的,然而奇葩的ie(10,11)都不行,它監聽不到localstorage裡值得變化,感覺ie中,localstorage是不共享的,和sessionstorage差不多。所以這個事件pass
第二個,找到了visibilitychange事件,視窗下切換tab頁時觸發,document.visibilitystate值有兩個,visible和hidden
新值和舊值,舊值我取的是sessionstorage裡的值,之前會把當前賬戶在session和local裡都存乙份。
document.addeventlistener('visibilitychange', () =>
}});
不知道有沒有發現,對的,ie又有了相容問題,因為我的newvalue又取了localstorage裡的值,他不是最新值,所以沒有變化,好悲傷。想了好久,忽然想到,當前狀態後端也存了乙份,所以**:
document.addeventlistener('visibilitychange', () =>
});}
});
有沒有很完美,然而這不完美,我又發現個乙個很恐怖的bug,visibilitychange裡**會執行很多很多遍,因為有請求,所以更恐怖,乙個介面會傳送好多遍,我找了很久很久,想到了節流閥,然而真的沒有用,連規律都沒有找到,馬上就要絕望的時候,問了我們老大,老大不愧是老大,人家找了一會就發現了問題(冒泡or捕獲)addeventlistener,對的,就是在最後加乙個false。
完整**:
document.addeventlistener('visibilitychange', () =>
});}
}, false);
這樣就解決了,哦,對了,還有乙個問題,如果不是在乙個視窗下,visibilitychange是不會觸發的 爬蟲 乙個url多頁
import urllib.request import urllib.parse from lxml import etree 鏈結url http www 迴圈得到分頁 for i in range 1,26 data urllib.parse.urlencode query encode en...
uap 乙個頁面包含多個tab頁
注意 weblet.js 引入每個tab頁要開啟的頁面 同一模組專案下面不同weblet import mx.containers.tabpage import mx.containers.tabcontrol 定義變數 var tabcontrol null var tabpage1 null v...
乙個vue滾動tab跟隨切換的例子
分享乙個我前幾天做的移動端 tab滾動跟隨的例子 隨著滾動條的滾動,tab會對應進行切換 首先我們需要監聽當前頁面的滾動 mounted destroyed 我們的tab列表可以在data裡面進行自定義陣列 tablist 然後我們在dom裡面對應渲染tab列表和對應內容,內容可以直接關聯到tabl...