存储URL的历史列表,并使用jquery访问上一个和下一个URL

时间:2014-06-14 07:09:37

标签: javascript jquery angularjs

我正在使用angularjs和jquery。我想手动存储url的历史列表,以便我可以根据需要访问url,并相应地前进和后退。我已经使用了document.referrerwindow.history.back()但我无法获取我需要的网址。

所以请告诉我一种方法,以便我可以手动获取它并将其存储在数组或某种方式中。

提前致谢。

3 个答案:

答案 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,看看它是否符合你的需要。

angularjs $route doc

angularjs tutorial that mentions how to use $route

答案 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 事件如果您使用角度的默认路由,则捕获路线更改的好地方