如何知道是从 B 页面回到 A 页面,而不是从 B 页面打开 A 页面?
本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
如何知道是从 B 页面回到 A 页面,而不是从 B 页面打开 A 页面?
本文参与了思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。
要确定是从 B 页面返回到 A 页面,而不是从 B 页面打开 A 页面,你可以使用以下方法:
* 当用户从 B 页面返回到 A 页面时,A 页面将位于浏览器的历史记录中。你可以检查当前页面是否在历史记录中。如果是,则可能是从 B 页面返回的;如果不是,则可能是从 B 页面新打开的。
* 注意:这种方法可能不适用于所有情况,特别是当用户清空了历史记录或使用无痕浏览时。
* 使用 JavaScript 可以检测当前页面是否在浏览器的历史列表中。例如,你可以使用 `window.history.back()` 来模拟浏览器后退按钮的行为,并检查页面是否成功返回。如果返回成功,则说明当前页面在历史记录中,可能是从 B 页面返回的。
* 示例代码:
```
javascript`if (window.history.back() === undefined) {
console.log("当前页面不在历史记录中,可能是新打开的");
} else {
console.log("当前页面在历史记录中,可能是从 B 页面返回的");
}`
```
* 在从 B 页面跳转到 A 页面时,可以在 A 页面的 URL 中添加一个特定的参数或查询字符串。然后,在 A 页面加载时检查该参数或查询字符串是否存在。如果存在,则说明是从 B 页面返回的;如果不存在,则可能是新打开的。
* 示例 URL:`http://example.com/pageA?returnFrom=pageB`
* 在 A 页面的 JavaScript 中:
```
javascript`if (location.search.includes("returnFrom=pageB")) {
console.log("是从 B 页面返回的");
} else {
console.log("不是从 B 页面返回的");
}`
```
* 如果你的应用程序使用会话或应用状态来跟踪用户的导航,你可以检查会话或应用状态中的相关信息来判断是从 B 页面返回还是新打开的。例如,你可以在从 B 页面跳转到 A 页面时设置一个特定的标志或状态,然后在 A 页面加载时检查该标志或状态。
* 为了提高准确性,你可以结合使用上述方法中的几种。例如,你可以结合检查 URL 参数和浏览器的历史记录来判断。这样可以提供更可靠的答案,特别是当单一方法可能产生误判时。
1 回答433 阅读✓ 已解决
1 回答464 阅读
1 回答356 阅读
381 阅读
314 阅读
设置一些状态标志来控制程序的流程,比如在 A 页面设置一个标志位用 APPStage 存储,在 A 页面 onPageHide 的时候将标志改为 false,然后在 onForeground 里面将标志位改成 true,在 A 页面的 onpageshow 里面判断,如果是 true 说明是后台切换前台,可能是从其他页面回到 A 页面;如果是 fasle 说明是路由跳转过来的,可能是从 B 页面打开 A 页面。