zhangxinxu / mobilebone

Single Page Switching bone(include page manage, events manage) for mobile web APP, Hybrid APP, Phonegap, PPT, Single-Screen PC page...
http://www.zhangxinxu.com/wordpress/?p=4381
MIT License
1.4k stars 327 forks source link

关于history 是否增加历史记录的几个问题? #158

Open ghost opened 9 years ago

ghost commented 9 years ago

1、如何由开发人员自主控制哪些a链接需要增加进历史记录?

2、如果是一些临时过场(不需要插入历史记录),即便在fallback时,将其dom移除,如何可以做到将其对于在history中历史记录一起移除,不然就会出现点击后退再点击前进时页面呈现空白!

3、使用Mobilebone.createPage创建页面,如果配置options.history为false,此时虽然当前过场不插入历史记录,但是此时点击手机后退物理键、或者浏览器后退,不是从当前不记录页面(临时过场页面)切换到上一个,而是直接在上一个页面切换到上上个页面,这点笔者可以试试,不合常理!

5、使用Mobilebone.ajax一样不能满足临时过场(不需要插入历史记录)的需求。

6、就目前Mobilebone没有好的方案来满足临时过场(不需要插入历史记录)的情况,建议支持,谢谢!

zhangxinxu commented 9 years ago

很好的反馈,我周末看看抽个时间处理下

zhangxinxu commented 9 years ago
  1. 我增加了data-history, 只要设置data-history="false" 就可以不增加历史记录;
  2. 因为走的是原生history记录,而据我所知好像没有清除特定history记录的API;
  3. 这个,我仔细分析了下,没有任何问题。既然你没有push历史记录,当前url实际上还是上一个主页面的,后退,自然就是从上一页到上上一页。
  4. 略~
  5. 如果你有临时过场需求,建议看看data-classPage这个API( http://rawgit.com/zhangxinxu/mobilebone/develop/docs/index.html#&data-classPage.html ),主要实现局部过场,这个不走history.
ghost commented 9 years ago

关于data-classPage这个API,还是不能满足需求。 首先局部过场是不支持手机后退操作的; 再一个不是所有局部过场都是小区域,很有可能就是一个类似page的页面切换,回过头来,后退操作还是想从临时过场回到当前页面的,仅仅不想插入到历史记录而已,这点比较难办;

就目前来说还是没有好的办法做到管理浏览器历史记录,单页应用复杂起来,如果不能做到移除操作,dom会越来越多。 借用Mobilebone.fallback方法中移除dom,最大的问题就是浏览器历史记录还存在,手机在后退操作过程中就会经常遇到空白页面!这种空白页面最大可能就是dom已经被移除。

ghost commented 9 years ago

一个bug 实例:点击加载(缓存, url过滤测试,历史无变化) 第一次点击,历史无变化;点击后退,再次点击,历史就会发生变化!

ghost commented 9 years ago

在反馈一个bug: 实例基本切换: 点击页面1-#&page1,点击刷新,此时看到,pageHome页面的loading也出现了!

zhangxinxu commented 9 years ago

好的,感谢反馈。

一般Android手机的卡顿主要在渲染上。DOM如果隐藏,不参与回流与重计算,对渲染性能没有影响。

选择器使用,可以尽量少使用document全局获取,可以走page,提高性能。

DOM存在的问题主要是内存占用。移动页面,一个页面几十K已经算挺大的了。事件这块,建议走全局委托,减小开销。

mitoop commented 7 years ago

data-history 我这管用