我正在使用angularjs和jquery。我想手动存储url的历史列表,以便我可以根据需要访问url,并相应地前进和后退。我已经使用了document.referrer
和window.history.back()
但我无法获取我需要的网址。
所以请告诉我一种方法,以便我可以手动获取它并将其存储在数组或某种方式中。
提前致谢。
答案 0 :(得分:1)
您无法直接从window.history
对象访问浏览器历史记录列表。
如果你真的需要这样做,那可能会很棘手和丑陋。
对于使用url hash切换应用程序状态的sinlge页面应用程序,您可以监听hashchange
事件并将哈希值推送到数组中:
var history = [];
$(window).on('hashchange', function() {
history.push(location.hash);
});
对于多页面应用,也许您可以收听onunload
事件,并将当前网址写入Cookie。您必须将代码添加到您拥有的每个页面;非常不优雅。
如果用户导航到您不拥有的页面,则您无法记录该部分历史记录。
您在问题中提到您使用angularjs。 Normaly当您使用这些mvx框架时,您不会直接处理浏览器历史记录,而是处理应用程序路径。 也许你应该看看angularjs $ route doc,看看它是否符合你的需要。
答案 1 :(得分:1)
我的应用程序以这种方式记录所有路由。
var angularAdmin = angular.module('app', ['ui.bootstrap','ngRoute', 'ngResource']);
angularAdmin.run(function ($rootScope, $location) {
$rootScope.history = [];
$rootScope.$on('$routeChangeSuccess', function() {
$rootScope.history.push($location.$$path);
});
答案 2 :(得分:0)
$ route,$ location 角度服务是您的朋友。
<强> $ location.absUrl(); 强>
$ routeChangeSuccess 事件如果您使用角度的默认路由,则捕获路线更改的好地方