【发布时间】:2021-06-08 15:24:29
【问题描述】:
我正在尝试在 iOS 上为 WKWebView 实现我自己的 Web 浏览器历史记录,但我无法完全实现此功能,并且每次遇到麻烦。 我可以创建用户所在的历史,然后在历史中前后移动。 但是我遇到了下一个麻烦,我认为这只是我遇到的许多问题之一。 当我有例如 10 个元素的历史记录,然后我回到第 5 个元素,然后不要前进但尝试打开新链接,我无法删除元素 6-10 并放置新链接。
我认为我的问题是我无法完全理解历史在所有浏览器中的工作原理,这不是一项艰巨的任务,但我对这个算法感到困惑。 我保存历史的主要数据结构 帮助我了解如何在浏览器中使用此算法,或者是否存在一个很好的理论?
【问题讨论】:
-
我不太明白这个问题。如果有人在元素 5 并访问一个新页面,只需删除元素 6-10 并添加一个新元素 6。您可以使用链表或数组来做到这一点。
-
理论上这并不难,但是在实现的过程中,复杂性在增加。我不完全理解如何必须完成一个完整的历史算法。因此,当我在历史之间移动时遇到问题,当我想进入一个停留在历史中间的新页面时,我的历史会变得混乱。
-
我的意思是,不就是这样吗:返回:
currentPosition--,转发:currentPosition++,访问新页面:history.remove(currentPosition + 1, history.length()); history.add(newPage); currentPosition++? (这是伪代码,remove删除给定索引之间的元素)。 -
我已经按照你的建议解决了这个问题,谢谢:) 目前所有算法都运行良好,等我完成所有任务,我会发布代码。
标签: algorithm web data-structures browser browser-history