Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将历史记录项添加到html浏览器历史记录中,而不更改页面_Javascript_Angularjs_Browser History_Html5 History - Fatal编程技术网

Javascript 将历史记录项添加到html浏览器历史记录中,而不更改页面

Javascript 将历史记录项添加到html浏览器历史记录中,而不更改页面,javascript,angularjs,browser-history,html5-history,Javascript,Angularjs,Browser History,Html5 History,我试图在用户访问我的angular应用程序时重写一小部分用户历史记录 目前,我正在尝试在应用程序加载后将最后一个历史记录项更改为某个页面,但是当前页面/url也会更改,而不仅仅是更改历史记录 在我的app.js中,我为angular定义了路线,我还有一个.run包含 history.pushState({}, 'Restaurants List', document.URL.match(/.+#\//).toString() + 'orders/restaurants') 这会立即将我的url

我试图在用户访问我的angular应用程序时重写一小部分用户历史记录

目前,我正在尝试在应用程序加载后将最后一个历史记录项更改为某个页面,但是当前页面/url也会更改,而不仅仅是更改历史记录

在我的
app.js
中,我为angular定义了路线,我还有一个
.run
包含

history.pushState({}, 'Restaurants List', document.URL.match(/.+#\//).toString() + 'orders/restaurants')
这会立即将我的url从预定目标更改为新的历史记录条目

我还尝试过使用
replaceState
,但没有成功

我想到的一个解决方案是首先更改历史记录,然后重定向用户,这很好,但我希望避免额外的开销


有没有办法只添加到历史记录中而不转到历史记录,这样,如果用户回击,它就会转到另一个页面?

我不确定是否可以在一个简单的命令行中执行此操作。您需要做的是在上捕获$rootScope.$on(“$stateChangeSuccess”事件,并在确定用户返回时更改此函数中的根。嗯,但这首先取决于用户是否在我的页面上。我的主网站会重定向到angular应用程序,我希望确保当他们单击back时,他们会重定向到angular页面st立即测试:当您在导航器上单击“返回”时,$rootScope.$on(“$stateChangeStart”将被激发,即使您是您的previouw URL是一个“非角度”页面。真的是现在,所以我只需添加逻辑来防止它们返回?即使我使用
event.preventDefault()
这足以阻止浏览器完全返回到不同的网页吗?比这更简单:在..$on(change…)功能中,使用angular service$location来路由到您想要的地方。angular是一个完整的框架,以angular的方式做事情很好(除了指令中的默认值,不要使用历史本机函数…)