使用Layer彈窗時遇到Layer.Close()後dom元素延遲性銷燬的問題 @Gyb

在編寫專題圖功能時,有一個場景爲打開A專題數據windowA後,查詢時間改變後需要重新渲染打開window,這時候執行windowA.close();windowB.open(),發現windowB中的統計圖模塊沒有渲染出來,經調試發現,在執行統計圖渲染時,windowA雖然關閉了,但是dom中還存在windowA的內容,導致統計圖渲染時發現渲染容器ID存在兩個,heightCharts沒有報錯,但是也無法正確渲染。

按照Layer的官方文檔描述,調用Close()方法後會銷燬layer元素。但是沒有找到銷燬元素是否有延遲存在。在Layer的論壇中也沒有找到這種問題的解決方法。

採取了一種笨方法,在windowA.close()之前,清空windowA的內容元素,然後執行windowB.open()。

元素銷燬的延遲性很難發現,只有跟js的執行語句的同時查看dom的變化才能發現,耗費了不少時間。

後續查看layer的源代碼發現有下列代碼:

其中發現3.0增加isOutAnim屬性默認爲true,導致延遲200毫秒執行銷燬dom元素。需要設置isOutAnim:true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章