我正在編寫此文件以記錄當前(明顯)的錯誤。用後退按鈕和「可排序」形式恢復表單狀態問題(Chrome和safari但不支持Firefox)
情況: 給定一個web應用程序,用戶可以在其中查看和排序表格數據(它從DOM加載,並通過javascript排序)。他們可以使用複選框和按鈕對查看的內容採取行動。
如果您使用返回按鈕返回表格數據頁面,則瀏覽器將填充複選框的狀態。這是預期的行爲。
併發症: 如果您先對錶格進行排序(使用JavaScript進行DOM內排序),然後填寫複選框並轉到其他頁面,然後使用後退按鈕返回,則瀏覽器的行爲將有所不同。
當前,Chrome(58)和Safari(10.1)以原始(不是按js排序)順序重新加載表單和表格數據,但按輸入順序恢復輸入(即忽略輸入的任何id - 當時只是他們在DOM中的順序) - 這導致了非常令人驚訝的行爲(形式乍一看似乎是你期望的,但不同的表單元素已經用不同的數據恢復)
但是Firefox (v50.0)以js排序的順序重新載入表單和表格數據,並且恢復的輸入是正確的。
我已經證明這更充分的https://timdiggins.github.io/back-button-restore-sorted-inputs/
理想情況下,瀏覽器將存儲對輸入的ID,而不是其在DOM爲了它們的輸入數據,或將緩存的DOM順序了。
我會用解決方法自己回答這個問題,但我希望有人會提出一個更好的建議。
或者在HTML5規範中的任何地方指出表單的DOM不應排序? (也就是說Chrome和Webkit有可能在這裏有所規定)。
更好的結果,但更多的工作 - 加載「下一頁」不作爲一個新的文件,但作爲覆蓋,並使用歷史pushstate回到排序的狀態。 –