如题。
使用情景如下:在一个页面中(a.html ),存在大量的不刷新 ajax 数据更新操作,每一次的 ajax 之后页面显示和 dom 结构发生变化。跳转到两一个页面( b.html )处理相关操作之后,通过 history.back ()返回到 a.html 页面。
需求如下:在通过 history.back ()返回之后,看到的 a.html 页面的显示和结构希望是完成最后一次 ajax 更新之后的情景,而不是初次进入 a.html 的情况。
尝试使用 history.pushState ()和 history.replaceState (),依然无法达到需求预期。
![]() | 1 orcusfox 2015-08-17 16:17:41 +08:00 这不就是 ajax 的短板么 |
![]() | 2 loading 2015-08-17 16:36:00 +08:00 via Android 也许你还需要配合 localstorage |
![]() | 3 ffffwh 2015-08-17 17:22:14 +08:00 "大量的不刷新 ajax 数据更新操作"大量是多少? 一般我是重新请求&重做一遍 dom |
![]() | 4 FinalAir OP |
![]() | 6 69 2015-08-17 17:51:56 +08:00 ![]() 分情: 一、重新打面之後,通 AJAX 取的(例如用信息、列表等)要更新到最新; 二、重新打面的候,只要展示面之前的即可; 如果是一:每 AJAX 操作做一,下次打的重新行些操作; 如果是二:整面的 DOM 果保存到 localstorage 中,下次打的候直接取替前 DOM ; |
![]() | 7 sneezry 2015-08-17 20:12:42 +08:00 via iPhone hash 记状态 |
![]() | 8 ChefIsAwesome 2015-08-17 20:30:29 +08:00 via Android ![]() 一,跳 b 也走 ajax ,然后 history 或者 hash 改 URL , a 的状态就保留了。 二, a 的 ajax 是响应某个状态的, hash 或者 cookie , local storage 等等。进页面的时候先读那个状态。用户的操作也是改变那个状态。 |
![]() | 9 FrankFang128 2015-08-17 20:33:09 +08:00 via Android 每次刷微博 /推特都会想到楼主这个问题。 他们都没解决,楼主。。。 |
![]() | 10 FrankFang128 2015-08-17 20:33:52 +08:00 via Android 新页面打开不就好了 ,哈哈 |
![]() | 11 dong3580 2015-08-17 21:15:22 +08:00 ![]() 1. localstorage 缓存对象; 2. 用 angularjs 的$scope 记下对象,无需使用 history 保存 dom 状态,直接更新状态; 3. 跳第二个页面的时候后端异步处理,返回处理后的 key ,带到返回页面请求结果。 |
![]() | 12 FinalAir OP |