解決AF3 詭異的頁面顯示問題

2021-09-06 22:07:19 字數 4717 閱讀 9002

使用af3開發應用,發現有乙個bug,在同乙個view下面的不同頁面切換後,這時候切換到別的view中的頁面,然後再切換到上乙個view下的頁面,此時只要目標不是剛才前乙個view中的最後顯示頁面就會出問題,因為此時只顯示最後的頁面!

除錯後發現是由於最後的活動頁面的active類沒有被移除,我希望找到合適的事件來自己執行這個任務。因此跟蹤了view和panel的事件。下面是我記錄的af3下 panel元件的切換過程觸發的事件記錄。

//

### 過程1:viewhome.pagehome --> viewlogin.page_login

******************page_login panelbeforeload

******************viewlogin panelbeforeload

******************page_login panelbeforeunload

******************viewlogin panelbeforeunload

******************viewhome panelunload

******************viewlogin panelload

******************page_login panelload

******************viewlogin panelload

//### 過程2(:back):viewlogin.page_login --> viewhome.pagehome

******************pagehome panelbeforeload

******************viewhome panelbeforeload

******************pagehome panelbeforeunload

******************viewhome panelbeforeunload

******************viewhome panelload

******************viewlogin panelunload

//### 過程3:viewhome.pagehome --> viewlogin.page_login

******************page_login panelbeforeload

******************viewlogin panelbeforeload

******************page_login panelbeforeunload

******************viewlogin panelbeforeunload

******************viewhome panelunload

******************viewlogin panelload

******************page_login panelload

******************viewlogin panelload

//### 過程4:viewlogin.page_login --> viewlogin.page_register

******************page_register panelbeforeload

******************viewlogin panelbeforeload

******************page_login panelbeforeunload

******************viewlogin panelbeforeunload

******************page_login panelunload

******************viewlogin panelunload

******************page_register panelload

******************viewlogin panelload

//### 過程5:viewlogin.page_register --> viewlogin.page_login

******************page_login panelbeforeload

******************viewlogin panelbeforeload

******************page_register panelbeforeunload

******************viewlogin panelbeforeunload

******************page_register panelunload

******************viewlogin panelunload

******************page_login panelload

****************** viewlogin panelload

發現如下問題:

1,不同view下panel切換:

transition不帶:back的時候,原panel和view有unload事件;

如果帶有:back,則原panel沒有unload事件,原view有unload事件

2,同一view下panel切換:

transition不帶:back的時候,原panel有unload事件,view竟然也有unload事件!!;

如果帶有:back,則原panel沒有unload事件,view有unload事件!!

想起應該是冒泡事件搗亂,遂在panel的事件中停止冒泡,再次重複上面過程:

//

### 過程1:viewhome.pagehome --> viewlogin.page_login

******************page_login panelbeforeload

******************page_login panelbeforeunload

******************viewhome panelunload

******************viewlogin panelload

******************page_login panelload

//### 過程2(:back):viewlogin.page_login --> viewhome.pagehome

******************pagehome panelbeforeload

******************pagehome panelbeforeunload

******************viewlogin panelunload

******************viewhome panelload

******************pagehome panelload

//### 過程3:viewhome.pagehome --> viewlogin.page_login

******************page_login panelbeforeload

******************page_login panelbeforeunload

******************viewhome panelunload

******************viewlogin panelload

******************page_login panelload

//### 過程4:viewlogin.page_login --> viewlogin.page_register

******************page_register panelbeforeload

******************page_login panelbeforeunload

******************page_login panelunload

******************page_register panelload

//### 過程5:viewlogin.page_register --> viewlogin.page_login

******************page_login panelbeforeload

******************page_register panelbeforeunload

******************page_login panelload

****************** page_register panelunload

這下子邏輯清晰了:

一、不同view之間的頁面切換:

原view有unload事件,新view有load事件;新panel有beforeload、beforeunload,load事件。

二、同乙個view之中的頁面切換:

原panel有beforeunload、unload事件,新panel有beforeload、load事件;view沒有事件!

$('.view,.panel').on('panelbeforeload panelbeforeunload panelload panelunload',function

(e)

if(el.hasclass('panel') && e.type=='panelunload')

if(el.hasclass('view') && e.type=='panelunload')

});

thinkphp驗證碼無法顯示的詭異解決

今天專案中的thinkphp驗證碼無法顯示,遂上論壇搜尋,問題最多的還是在bom,有人說關閉debug後就能顯示驗證碼,試了試,果然,關閉debug就正常了,但是一開啟debug就還是無法顯示了.怎麼回事呢?驗證碼要使用驗證碼,需要匯入擴充套件類庫中的org.util.image類庫和org.uti...

如何解決JSP頁面顯示亂碼問題

一 jsp頁面顯示亂碼 二 表單提交中文時出現亂碼 三 資料庫連線時出現亂碼 一 jsp頁面顯示亂碼 下面的顯示頁面 display.jsp 就出現亂碼 out.print jsp的中文處理 對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因 伺服器使用的編碼方式不同和瀏覽器對不同的字元...

如何解決JSP頁面顯示亂碼問題

下面的顯示頁面 display.jsp 就出現亂碼 out.print jsp中文處理 對不同的web伺服器和不同的jdk版本,處理結果就不一樣。原因 伺服器使用的編碼方式不同和瀏覽器對不同的字元顯示結果不同而導致的。解決辦法 在jsp頁面中指定編碼方式 gb2312 即在頁面的第一行加上 page...