使用Cookies保存网站历史浏览记录实例代码

yizhihongxing

下面是使用 Cookies 保存网站历史浏览记录的完整攻略。

1. 需求分析

在网站上实现浏览记录的保存,主要的需求分析包括以下几点:

  1. 当用户浏览网站时,需要记录用户的浏览历史。
  2. 浏览历史需要以列表形式展示在网站上。
  3. 浏览历史需要随着用户的浏览动态更新。
  4. 浏览历史需要在用户关闭浏览器后依然能够保存。
  5. 用户进入网站时需要从 Cookies 中读取保存的浏览历史。

2. 实现思路

根据需求,我们可以将实现浏览历史的步骤分为以下几个部分:

  1. 每次用户访问网站时,使用 JavaScript 将当前页面的 URL 添加到浏览历史中。
  2. 将浏览历史以 JSON 格式保存到 Cookies 中。
  3. 在网站上展示保存在 Cookies 中的浏览历史。
  4. 在用户关闭浏览器时,将浏览历史保存到 Cookies 中。
  5. 在用户再次进入网站时,从 Cookies 中读取上一次保存的浏览历史。

3. 代码实现

我们可以使用 JavaScript 脚本来实现浏览历史的保存和读取。下面是一个示例代码,它可以将当前访问的页面 URL 添加到浏览历史中,并将浏览历史保存到 Cookies 中。

// 读取保存在 Cookies 中的浏览历史
function getHistory() {
  var history = [];
  var historyJson = getCookie("history");
  if (historyJson) {
    history = JSON.parse(historyJson);
  }
  return history;
}

// 将浏览历史保存到 Cookies 中
function saveHistory(url) {
  var history = getHistory();
  if (history.length >= 10) {
    history.shift();
  }
  history.push(url);
  setCookie("history", JSON.stringify(history), 30);
}

// 添加当前访问的页面 URL 到浏览历史中
function addHistory() {
  if (location.pathname != "/") {
    saveHistory(location.pathname);
  }
}

// 读取 Cookies 中指定名称的值
function getCookie(name) {
  var cookies = document.cookie.split("; ");
  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i].split("=");
    if (cookie[0] == name) {
      return cookie[1];
    }
  }
  return null;
}

// 设置 Cookies 中指定名称和值
function setCookie(name, value, expiredays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate() + expiredays);
  document.cookie = name + "=" + value + ";expires=" + exdate.toUTCString();
}

上述代码中,getHistory 函数用于从 Cookies 中读取保存的浏览历史列表,saveHistory 函数用于将当前页面的 URL 添加到浏览历史中并保存到 Cookies 中,addHistory 函数则用于在每次页面加载时调用 saveHistory 函数。

下面是一个简单的 HTML 示例页面,展示了如何在网站上展示保存在 Cookies 中的浏览历史列表。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>浏览历史示例页面</title>
</head>
<body onload="loadHistory()">
  <h1>浏览历史</h1>
  <ul id="history"></ul>
  <script>
    // 加载保存在 Cookies 中的浏览历史
    function loadHistory() {
      var history = getHistory();
      var historyList = document.getElementById("history");
      for (var i = 0; i < history.length; i++) {
        var item = document.createElement("li");
        var link = document.createElement("a");
        link.href = history[i];
        link.innerHTML = history[i];
        item.appendChild(link);
        historyList.appendChild(item);
      }
    }
  </script>
</body>
</html>

在上面的 HTML 代码中,loadHistory 函数用于从 Cookies 中读取保存的浏览历史列表,并将其展示在页面上。其中 getHistory 函数和前面的代码相同。

4. 示例说明

下面是两个示例说明,帮助您更好地理解如何使用 Cookies 保存网站浏览历史。

示例一

假设有一个博客网站,当用户访问博客的文章页面时,需要将文章的 URL 添加到浏览历史中,并在网站的侧边栏中展示浏览历史列表。

为了实现这个需求,我们可以在博客网站的文章页面中添加以下 JavaScript 代码:

// 添加当前文章的 URL 到浏览历史中
addHistory();

并在网站的侧边栏中添加一个 HTML 元素,用于展示浏览历史。例如:

<div id="sidebar">
    <h2>浏览历史</h2>
    <ul id="history"></ul>
</div>

在侧边栏内部,我们可以加载之前提到的那个展示浏览历史列表的 JavaScript 代码,对应的 HTML 代码就是:

<!-- 加载保存在 Cookies 中的浏览历史列表 -->
<script>
    loadHistory();
</script>

示例二

假如我们需要在网站上记录用户访问的每个页面,包括用户的来源、访问时间和访问时长,在用户关闭浏览器后依然能够保存。

我们可以使用以上提到的实现思路,实现一个更加复杂的浏览器历史。即,在记录页面 URL 时,同时将用户的来源、访问时间和访问时长加入到保存在 Cookies 中的浏览记录中。

function recordHistory() {
  var history = getHistory();
  var url = location.pathname;
  var referer = document.referrer;
  var timestamp = Date.now().toString();
  var duration = "0";

  if (history.length > 0) {
    duration = (Date.now() - history[history.length - 1].timestamp).toString();
  }

  var record = {"url": url, "referer": referer, "timestamp": timestamp, "duration": duration};

  if (history.length >= 10) {
    history.shift();
  }
  history.push(record);
  setCookie("history", JSON.stringify(history), 30 * 24 * 60 * 60);

  return record;
}

上述代码中,函数 recordHistory 在记录页面URL、用户来源等同时,还保存了页面打开至关闭的访问时间、访问时长等信息。修改的就是保存在 Cookie 中的浏览历史内容格式,并使用对应的 JavaScript 函数解析并展示在页面上。

这两个示例都能满足不同需求的浏览历史功能,具体实现方式会因需求差异而异,但是大概思路是相同的,即通过 JavaScript,将浏览历史保存在 Cookie 或者 LocalStorage 中,再通过 JavaScript 将浏览历史信息加载到页面上展示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Cookies保存网站历史浏览记录实例代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript自定义函数参数传递为字符串格式

    当定义一个自定义函数时,我们可以定义该函数拥有的参数列表。这些参数可以是任何类型的,如字符串、数字、布尔值、数组和对象等。当我们调用这个函数时,我们必须传递与函数定义中声明的参数类型相匹配的参数。下面是关于如何将字符串格式作为函数参数传递的完整攻略。 1. 将字符串作为函数的参数 我们可以将字符串值作为自定义函数的参数,这个字符串可以是任何东西,例如一个句子…

    JavaScript 2023年5月28日
    00
  • JS数组方法reduce的用法实例分析

    【JS数组方法reduce的用法实例分析】 简介 reduce() 方法可以用于在 JavaScript 数组中的所有元素上执行一个 reducer 函数(指定一个回调函数来依次执行数组中每个值)。reduce() 方法的返回值为最终累计结果的值,例如,对于数组 [1, 2, 3, 4] ,调用 reduce() 方法,则最终的返回值为 10 (数组各元素之…

    JavaScript 2023年5月28日
    00
  • JavaScript中的object转换函数toString()与valueOf()介绍

    介绍 JavaScript 中的 object 转换函数 toString() 与 valueOf(),可能需要先了解一下 object 和函数的基本概念。 什么是 object? 在 JavaScript 中,object 是最常用的数据类型之一,它可以被用来存储和组织数据以及代码。你可以将其想象成一个容器,容器内可以存储各种类型的数据,包括字符串、数字、…

    JavaScript 2023年6月10日
    00
  • JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法

    当我们使用 JavaScript 编写代码时,经常会遇到“Uncaught SyntaxError: Unexpected token ILLEGAL”这样的错误提示,而这个错误提示一般代表着代码中存在语法错误,但有时候我们也会遇到代码本身没有错误,但依然出现了这个错误提示的情况,究竟该如何解决呢?下面是详细的解决方法攻略: 一、检查代码语法 首先,我们需要…

    JavaScript 2023年5月18日
    00
  • Chrome开发者工具9个调试技巧详解

    Chrome开发者工具9个调试技巧详解 Chrome开发者工具是Web开发中常用的工具之一,能够极大地提高Web开发效率和质量。下面介绍9个Chrome开发者工具的调试技巧和使用方法。 1. 各种设备模拟 开发人员可以使用Chrome开发者工具模拟各种设备,例如手机、平板电脑等。在开发过程中,可以方便地查看网站在不同设备上的样式表现和响应速度。 示例:在Ch…

    JavaScript 2023年6月11日
    00
  • JS Map 和 List 的简单实现代码

    当我们在使用JavaScript的时候,有时候需要使用一些数据类型来进行操作和处理。在这些数据类型中,Map和List就是两个常用的数据类型之一。 什么是Map和List 在JavaScript中,Map是一种用于存储键值对的集合。Map中的键可以是任意类型的值,如字符串、数字甚至是对象,同样的值可以对应于不同的键。而List则是一种由一列元素组成的有序集合…

    JavaScript 2023年6月10日
    00
  • Extjs表单输入框异步校验的插件实现方法

    下面是详细讲解“Extjs表单输入框异步校验的插件实现方法”的完整攻略。 什么是Extjs表单输入框异步校验的插件? 在使用Extjs框架编写表单时,常常需要对表单中的输入框进行校验,以保证用户输入的内容符合要求。而有些校验规则需要通过异步方式进行,比如从后台获取数据判断输入是否合法。这时就需要用到Extjs表单输入框异步校验的插件。 实现方法 具体实现方法…

    JavaScript 2023年6月10日
    00
  • 原生JS实现多条件筛选

    原生JS实现多条件筛选的完整攻略如下: 1. HTML结构 首先,我们需要搭建HTML结构,例如: <div> <label for="input1">条件1:</label> <input type="text" id="input1"> </…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部