DWZ框架的ajax請求返回的一般都是一個HTML片段,整個頁面是由一個個HTML片段組成的,可以由TAB切換其內容,但是只有一個body和HEAD,一般head 和 菜單欄是不會動的。
今天遇到一個問題,當一個點擊進入一個tab頁面時,這個tab頁的布局完全和其他頁面的tab頁面不一致,也就是其菜單欄和head的內容完全改變了。當用戶要返回原來的樣式時候,用自己寫的JS方法把樣式還原可以。但是是頁面上的一個button。
當用戶用瀏覽器自帶的前進后退返回的時候,問題來了,因為瀏覽器的前進后退是根據瀏覽歷史的緩存來的(暫且這么理解吧)。這個歷史是一個數組來儲存的。前進就是顯示后一個的歷史,后退就是前一個的。當然,都是如果list支持的情況下;
瀏覽器的前進后退會觸發頁面的 onunload 和 onbeforeunload 事件 在使用event.returnValue("string")就會彈出你想要的警告。
由于正常的瀏覽器history是一個個完整的頁面,前進后退按鈕會觸發其onunload等事件,但是DWZ這種框架不會,因為你始終在一個頁面上進行操作。當然不會觸發onunload等事件。前進后退只會顯示歷史的HTML片段。
那么,在點擊后退后 頁面樣式變形等問題出現了,使用setInterval 判斷這個tab的父元素是否顯示來判斷是否回到原來頁面。樣式能還原,但是多前進后退幾次就要出現問題。
暫時的解決方法,讓其history一直在最后就是每次點擊后退返回后讓其window.history.go(1);要返回前面的頁面。
?