Chrome导航和会话历史
来源:互联网 发布:黑色沙漠捏脸数据放哪 编辑:程序博客网 时间:2024/06/03 19:07
每个NavigationEntry都会存储一个页面ID和历史状态数据。页面ID用来唯一标识一个页面载入,这样我们就知道哪一个NavigationEntry与之对应。它在页面被提交时分配,所以一个pending状态的NavigationEntry的页面ID是-1。历史状态数据就是WebCore::HistoryItem序列化的一个字符串。它里面包含了页面URL,子frame URL,以及表格数据。
1.当浏览器初始化请求时(在地址栏中输入,或者点击后退/前进/刷新)
2.生成一个WebRequest来表示导航,它会一直为书记员(bookkeeping)带着页面ID之类的信息。新导航的ID是-1。当页面是第一次访问时,旧入口的导航会把ID分配给NavigationEntry。到后面载入提交时,还会查询这个信息。
3.主WebFrame会被调用来载入新的请求。
4.渲染器初始化请求时(用户点击链接,js改变了location,等)
5.WebCore::FrameLoader的各个载入方法会被调用来载入请求。
6.无论什么情况,当收到服务器返回的第一个包时,载入会被提交(不再是"pending"或"provisional"状态)。
7.如果有一个新的导航,会fork出一个新的WebCore,它会创建一个新的HistoryItem,并加到BackForwardList中。用这个方法,我们可以区分哪个导航是新的,哪个是会话历史导航。
8.RenderView::DidCommitLoadForFrame处理载入的提交。在这,前一个页面的状态通过ViewHostMsg_UpdateState消息被存储在会话历史中。这告诉浏览器去更新对应的NavigationEntry(通过RenderView的当前页面ID标识)为新的历史状态。
9.RenderView的当前页面ID被更新为提交页面的ID。对于新的导航,会生成一个新的唯一页面ID。对会话历史导航,页面ID是第一次访问时的ID,初始化导航时,已经把它存在WebRequest里了。
10.发送一个ViewHostMsg_FrameNavigate消息给浏览器,更新对应的NavigationEntry(由RenderView刚更新的页面ID标识)的新URL和其他信息。
- Chrome导航和会话历史
- Google Chrome的历史和指导原则
- Oracle 查询数据库碎片和和历史会话
- chrome 删除地址栏历史
- chrome历史版本下载
- Chrome的版本历史
- 左侧垂直导航+滚动跟随-兼容IE8和Chrome浏览器
- 如何下载Chrome历史版本
- Chrome浏览器历史版本下载
- Chrome浏览器历史版本下载
- 为什么 chrome 不做导航页
- 360导航侵占chrome浏览器
- Google Chrome OS的历史与未来
- Chrome插件Stylebot还原到历史版本
- jQuery带筛选功能垂直导航代码-兼容IE8和Chrome浏览器
- 导航条随页面滚动自动置顶-兼容IE8和Chrome浏览器
- 测试人眼中的车联网(比亚迪云服务-3.2.1)——车队导航和历史轨迹
- 使用ASH监控历史会话,找出坏SQL
- php学习笔记(二十六)php中session的初步使用(基于cookie的)
- 了解Linux系统相关信息
- Chrome从地址栏打开一个URL地址
- Excel抓取网站内容
- 单例servlet
- Chrome导航和会话历史
- 25个让Java程序员更高效的Eclipse插件
- C++ STL list函数详解
- php学习笔记(二十七)php中session的使用(基于url的)
- 链接器解析多重定义的全局变量
- js中top、parent、frame
- 第3章:游戏:石头,剪刀,布
- 重建所有表的索引的存储过程
- Flex 图片调整(Matrix 矩阵)(放大/放小/左旋转/右旋转/上移/下移/左移/右移/还原/调整 ...