我在我的应用上使用了一个重定向到上一页的按钮。
看起来像这样:
<button ng-click="goBack()">Go back</button>
$scope.goBack = function() {
$window.history.back();
}
我希望此按钮转到上一个网址不同的当前网址,而不仅仅是上一页(可能与当前网址相同)。
示例:
/home
,然后转到/products
,然后转到/products
,再转到/products
/home
。答案 0 :(得分:1)
出于安全原因,您无法访问本机历史记录网址。但你可以使用角度来保存自己的记录,例如myHistoryService
:
app.run(function($rootScope, $location, myHistoryService) {
$rootScope.$on('$routeChangeStart', function(ev, next) {
var path = $location.path();
myHistoryService.push(path);
});
});
在myHistoryService
中,您可以直接推送到数组,或使用您喜欢的任何逻辑。
这假设您只需要在您自己的域中使用历史记录。
答案 1 :(得分:0)
如果您只想在角度应用程序中这样做,那就不难了。
例如,您必须使用stateChangeSuccess
事件监视状态更改,并在状态URL相同时进行计数。如果您想要返回上一个不同的网址,可以使用window.history.go(-X)
,其中X
是您计算的数字。
一个例子(不完美,只是一个概念,为简单起见,所有内容都在$ rootScope上)。
angular.module('YourModule').run(function() {
var lastUrl, counter;
$rootScope.$on('$stateChangeSuccess', function(event, toState) {
if (lastUrl != toState.url) {
counter = 1;
lastUrl = toState.url;
} else {
counter++;
}
});
$rootScope.goBack = function() {
$window.history.go(-1 * counter);
};
});
答案 2 :(得分:-1)
<强> 1 强>
您可以使用window.history.back();
使浏览器返回上一页,但无法访问该网址。如果可能的话,您可以在第一次进入您的网站时轻松监视每个用户。
但如果它位于同一个域中,您可以使用document.referrer
访问以前的网址。
<强> 2 强>
要访问浏览器历史记录,请History Object
您可以通过window.history
访问它,它将返回一系列历史记录项。使用该对象,您可以比较当前位置window.location.href
和此先前返回的对象