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

下面是使用 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日

相关文章

  • JSONP跨域的原理解析及其实现介绍

    下面我将详细讲解“JSONP跨域的原理解析及其实现介绍”的完整攻略。 什么是JSONP跨域 首先,需要了解JSONP(JSON with Padding)是什么。在网络应用中,由于安全策略的限制,浏览器不能直接跨域获取数据。JSONP利用“script”标签不受跨域限制的特性,通过动态创建“script”标签,并在服务器返回的数据中添加一个回调函数,从而实现…

    JavaScript 2023年5月27日
    00
  • javascript String 的扩展方法集合

    下面是关于“javascript String 的扩展方法集合”的完整攻略。 标准的 String 方法 JavaScript 中的 String 拥有许多标准的方法,例如 charAt()、substr()、slice()、toUpperCase() 等等。这些方法可以在 MDN 上找到详细的文档说明和使用示例。 扩展的 String 方法 除了标准的方法…

    JavaScript 2023年5月27日
    00
  • javascript 取小数点后几位几种方法总结

    关于JavaScript取小数点后几位的方法,可以结合下面的代码和说明来进行总结: 一、使用toFixed方法 JavaScript内置的toFixed方法可以将一个数字四舍五入为指定小数位的数字字符串,具体语法如下: numObj.toFixed([digits]) 参数digits是可选的,表示需要保留的小数位数,如果不传入该参数则默认保留0位小数。调用…

    JavaScript 2023年6月11日
    00
  • JavaScript极简入门教程(一):基础篇

    JavaScript是一门适用于Web前端开发的脚本语言,可以为静态的HTML页面增加一定的动态效果和交互性。 本篇教程是JavaScript的基础篇,主要介绍JavaScript的基础语法和常见数据类型,是初学者了解JavaScript的必备知识。具体内容如下: JavaScript基础语法 1. 注释 JavaScript的注释有两种方式,单行注释使用/…

    JavaScript 2023年5月17日
    00
  • js进行表单验证实例分析

    下面就来详细讲解“js进行表单验证实例分析”的完整攻略。 1. 前言 在web开发中,表单验证是非常重要的一部分。它能够让用户输入合法的数据、提升网站的可用性、增强用户体验。而JavaScript是现代Web开发中应用最为广泛的脚本语言之一,提供了很多方法和工具用于表单验证。 2. 表单验证的实现 为了实现表单验证,我们需要使用HTML和JavaScript…

    JavaScript 2023年6月10日
    00
  • js时间戳转为日期格式的方法

    当我们从服务端获取到时间戳后,通常需要将其转化为易读的日期格式以便显示在页面上。这个过程有很多方法实现,下面我们就来详细讲解一下“js时间戳转为日期格式的方法”,希望能对你有所帮助。 方法一:使用内置方法 在JavaScript中,Date对象拥有将时间戳转为日期格式的内置方法。以下是一段示例代码: const timestamp = 1605679610;…

    JavaScript 2023年5月27日
    00
  • javascript 面向对象编程基础 多态

    JavaScript 是一门支持面向对象编程(Object Oriented Programming,OOP)的语言,而多态作为面向对象编程的三大特性之一,对于我们编写复杂的应用程序来说,非常重要。 多态的概念及好处 多态是指同一个接口,不同的表现形态。在程序中,就是指一个类实例化之后,可以有多种不同的形态。 多态的好处是,增强程序的灵活性以及可扩展性。当我…

    JavaScript 2023年5月27日
    00
  • js函数调用常用方法详解

    js函数调用常用方法详解 在JavaScript编程中,函数是最基础的概念之一。函数是一段可重复使用的代码,可以在不同的上下文中多次调用。在本文中,我们将详细讲解JavaScript函数调用的常用方法。 常规函数调用 通常,我们会使用以下语法来定义函数: function functionName(param1, param2, …) { // 函数体 …

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