防止 window.history 中的重复实例
Prevent duplicate instances in window.history
我有一个主页,您可以在其中将其他页面加载到容器中。加载页面后,您仍在主页上,但浏览器 URL 应设置为已加载页面的 URL。关闭加载的页面时,应将 URL 重置为主页的 URL。
我想通过简单地使用 history.replaceState
或 pushState
来解决这个问题,而不必返回浏览器历史记录(因为返回会导致某些浏览器刷新并弄乱滚动)。
我目前的解决方案是
clickLoadPage => (pageUrl) {
closeOtherLoadedPages();
if (isOnMainPage())
pushState(pageUrl)
else
replaceState(pageUrl)
}
clickUnloadPage => () {
replaceState(mainpageUrl);
}
注意:它设计为在任何时候只加载一个页面。示例:首次加载页面 1。然后加载页面 2。期望的效果:页面 1 关闭,url 替换为页面 2。在这种状态下,在浏览器中返回将返回到主页 URL。
问题是,每次加载新页面然后关闭它时,都会将带有主页的新状态添加到窗口历史记录中。这些状态应该只有 1 个,但我最终有几个。
是否有可能以其他方式解决这个问题?我对window.history
api 不太熟悉,是否可以做一些事情,比如删除状态,或者确保不添加重复的状态?
当页面被关闭时,你可以调用 history.back() 方法来从历史记录中弹出状态,因此 url 将更改为上一个。
如果您打开了第 1 页并且想要打开第 2 页,则需要调用方法来关闭已打开的页面以从历史记录中弹出状态,然后才打开另一个页面。
相关文章:
- ES6构造函数返回基类的实例
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 直接下载文件,而不是从window.open(url)
- $window.ga在AngularJS事件中未定义
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 如何将PDF作为二进制文件传递到window.open()
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- window.onload没有'无法在Android WebView中工作
- 使用jQuery获取Dropzone实例/对象
- window.location替换并传递URL历史记录条目中的变量
- window.on.scroll事件未启动
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 防止 window.history 中的重复实例
- ExtJS中的控制器职责是什么?Ext.window.Window实例中的事件
- 为什么& # 39;这个# 39;指'window'而不是类实例
- 如何使用“Ext.window”后释放内存.窗口类实例
- 无法使用chrome.app.window.get获取chrome.window实例
- 一种检查对象是否是window.constructor实例的干净方法