Javascript 如何获取路由历史中与当前URL不同的第一个URL?
我正在使用应用程序上的一个按钮重定向到上一页 看起来是这样的:Javascript 如何获取路由历史中与当前URL不同的第一个URL?,javascript,angularjs,angular-routing,Javascript,Angularjs,Angular Routing,我正在使用应用程序上的一个按钮重定向到上一页 看起来是这样的: <button ng-click="goBack()">Go back</button> 我希望此按钮转到与当前URL不同的上一个URL,而不仅仅是上一页(可能与当前URL相同) 例如: 如果我进入/home,然后进入/products,然后进入/products,然后再次进入/products 然后我想恢复/home 是否有方法获取与当前URL不同的第一个URL?1。 您可以使用window.his
<button ng-click="goBack()">Go back</button>
我希望此按钮转到与当前URL不同的上一个URL,而不仅仅是上一页(可能与当前URL相同)
例如:
- 如果我进入
,然后进入/home
,然后进入/products
,然后再次进入/products
/products
- 然后我想恢复
/home
window.history.back()使浏览器返回上一页代码>但您无法访问该URL。如果这是可能的,你可以很容易地间谍每一个用户,当他们第一次进入你的网站
但是如果它在同一个域上,您可以使用document.referer
访问以前的URL
2.
要访问浏览器历史记录,有
您可以通过窗口访问它。历史记录
,它将返回一组历史记录项。使用该对象,您可以比较当前位置window.location.href
和以前返回的对象1.
您可以使用window.history.back()使浏览器返回上一页代码>但您无法访问该URL。如果这是可能的,你可以很容易地间谍每一个用户,当他们第一次进入你的网站
但是如果它在同一个域上,您可以使用document.referer
访问以前的URL
2.
要访问浏览器历史记录,有
您可以通过窗口访问它。历史记录
,它将返回一组历史记录项。使用该对象,您可以比较当前位置window.location.href
和以前返回的对象如果您只想在angular应用程序中进行比较,这并不困难。
例如,您必须使用stateChangeSuccess
事件监视状态更改,并在状态URL相同时计数。当您想返回上一个不同的URL时,可以使用window.history.go(-X)
其中X
是您计算的数字
一个例子(不是完美的,只是一个概念,为了简单起见,一切都在$rootScope上)
如果你只想在angular应用程序中实现这一点,这并不难。
例如,您必须使用stateChangeSuccess
事件监视状态更改,并在状态URL相同时计数。当您想返回上一个不同的URL时,可以使用window.history.go(-X)
其中X
是您计算的数字
一个例子(不是完美的,只是一个概念,为了简单起见,一切都在$rootScope上)
出于安全原因,您将无法访问本机历史URL。但您可以使用angular来保存自己的记录,例如myHistoryService
:
app.run(function($rootScope, $location, myHistoryService) {
$rootScope.$on('$routeChangeStart', function(ev, next) {
var path = $location.path();
myHistoryService.push(path);
});
});
在myHistoryService
中,您可以直接推送到数组,或者使用任何您喜欢的逻辑
这假设您只需要在自己的域中使用历史记录。出于安全原因,您将无法访问本机历史记录URL。但您可以使用angular来保存自己的记录,例如myHistoryService
:
app.run(function($rootScope, $location, myHistoryService) {
$rootScope.$on('$routeChangeStart', function(ev, next) {
var path = $location.path();
myHistoryService.push(path);
});
});
在myHistoryService
中,您可以直接推送到数组,或者使用任何您喜欢的逻辑
这假设您只需要在自己的域中使用历史记录。的可能重复(而不是downvoter)尝试console.log(window.history)
,并获取历史记录{length:50,scrollRestoration:“auto”,state:null}
。我怎样才能从这个对象访问以前的URL?它确实存储了历史记录,但是你不能访问我说过的URL,我想这是为了防止间谍活动。您可以对历史对象使用一些方法,如下所述:(不是downvoter)尝试console.log(window.History)
,并获取History{length:50,scrollRestoration:“auto”,state:null}
。我怎样才能从这个对象访问以前的URL?它确实存储了历史记录,但是你不能访问我说过的URL,我想这是为了防止间谍活动。您可以在历史对象上使用一些方法,如下所述:我在网上看到了类似的情况,但是historyService
可能增长非常快,您必须设置一个清理系统。。。它似乎有点复杂,只有一个单一的页面按钮,所以我不会使用这个。无论如何,我投了赞成票,因为我觉得你的答案很有趣。我在网上看到了类似的事情,但是historyService
可能发展得很快,你必须建立一个清洁系统。。。它似乎有点复杂,只有一个单一的页面按钮,所以我不会使用这个。我还是投了赞成票,因为我觉得你的答案很有趣。我不知道历史中是否存在.go()
。我会处理的,谢谢!我不知道历史中是否存在.go()
。我会处理的,谢谢!
app.run(function($rootScope, $location, myHistoryService) {
$rootScope.$on('$routeChangeStart', function(ev, next) {
var path = $location.path();
myHistoryService.push(path);
});
});