Webview accessBackward不符合预期的可能情况
================================

**背景**

一般情况下，页面发生新的跳转时，前进后退栈会递增，此时accessBackward会返回true，表示存在后退历史节点。然而，在某些情况下，新的跳转不会新增历史节点，而是替换当前节点，比如当加载相同的URL，或者在初始URL加载过程中进行刷新时。

**场景一**：**错误reload导致accessBackward与预期不符**

**解决措施**

在初始URL加载过程中进行刷新，例如[refresh](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#refresh)或通过[setCustomUserAgent](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#setcustomuseragent10)间接引起的自动刷新，会导致Web组件中的前进后退栈保持初始节点。此时，后续的跳转会替换掉该初始节点，而不会新增历史节点，accessBackward将返回false。

如果在页面加载过程中调用setCustomUserAgent会导致页面自动刷新，正确的使用方法请参考[setCustomUserAgent](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#setcustomuseragent10)接口使用。

**场景二：****因历史操作干预机制导致的accessBackward与预期不符**

**解决措施**

某些页面通过重定向或操作浏览器历史记录，导致用户无法或很难通过浏览器的[backward](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#backward)返回到之前的页面，这会影响用户体验。历史操作干预机制通过跳过那些没有用户激活就添加的历史记录条目或重定向页面，来缓解这种问题。需要注意的是，这种干预仅影响浏览器的[backward](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#backward)和[forward](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-webview-webviewcontroller#forward)操作，而不会影响前端的history.back()和history.forward()。

示例如下：

1.  用户在a.com网站上，点击跳转到b.com。
2.  b.com使用pushState添加历史记录条目，或在未获得用户激活的情况下将用户导航到另一个页面（c.com）。
3.  如果用户按下返回按钮，将跳过b.com，直接返回到a.com。