使用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日

相关文章

  • JavaScript setTimeout和setInterval的使用方法 说明

    JavaScript setTimeout和setInterval的使用方法 说明 在 JavaScript 中,setTimeout 和 setInterval 都是一种定时器,可以让我们在指定的时间间隔或指定的时间后执行指定的函数。 setTimeout setTimeout 函数会在指定的时间后执行一次指定的函数。 语法 setTimeout(func…

    JavaScript 2023年6月11日
    00
  • 在js中使用”with”语句中跨frame的变量引用问题

    在JavaScript中,我们可以使用with语句来简化某些代码块的书写,从而使得代码更加简洁易读。但是,在使用with语句时需要注意,在跨frame的情况下,可能会引起变量引用的问题,尤其是在涉及到变量作用域的问题时。 下面是在JS中使用with语句中跨frame的变量引用问题的完整攻略: 问题的表现 假设在sample.html文件中,我们有一个名为fr…

    JavaScript 2023年6月10日
    00
  • 你有必要知道的10个JavaScript难点

    你有必要知道的10个JavaScript难点 1. 变量提升 JavaScript 中的变量提升是指 JS 引擎将变量声明提升到作用域的顶部,即在变量声明之前就能访问该变量。变量提升会造成变量值的不确定性,应该格外注意。 例如: x = 5; console.log(x); var x; 这个例子中,虽然变量 x 的值在声明之前被赋值为 5,但是在变量声明之…

    JavaScript 2023年5月18日
    00
  • 使用原生JS添加进场和退场动画详解

    使用原生JS添加进场和退场动画可以通过给元素添加CSS类名来实现。下面是详细的步骤: 创建CSS动画 首先,需要先在CSS中定义好对应的进场或退场动画,例如: .animate-in { opacity: 0; transform: translate(0, 50px); animation-name: fadeIn; animation-duration:…

    JavaScript 2023年6月10日
    00
  • js实现动态显示时间效果

    一、使用JavaScript获取当前时间 在JavaScript中,可以使用new Date()方法创建一个Date对象,该对象获取到的是当前电脑系统的时间。可以将该对象保存到一个变量中,用于后续操作。 示例代码: var currentTime = new Date(); 二、格式化时间 为了在页面中展示时间,需要对时间进行格式化。JavaScript提供…

    JavaScript 2023年5月27日
    00
  • JavaScript ES6中的简写语法总结与使用技巧

    JavaScript ES6中的简写语法总结与使用技巧 ES6是JavaScript中的一个重大升级版本,它增加了不少新特性,其中包括一些语法的简写,可以减少开发者的代码输入量,并提高代码的可读性。下面就来总结一下JavaScript ES6中的简写语法及其使用技巧。 1. 变量声明 ES6引入了let和const来替代原来的var。同时还加入了一些新的变量…

    JavaScript 2023年5月19日
    00
  • JS简单实现String转Date的方法

    以下是JS简单实现String转Date的方法的攻略。 1. 解析字符串为Date对象 首先要做的是将字符串解析为Date对象,可以使用内置函数 Date.parse 或 new Date。推荐使用 new Date 的方式。 // 方法一:使用Date.parse let dateString = ‘2021-08-12’; let date = new …

    JavaScript 2023年6月10日
    00
  • javascript replace()正则替换实现代码

    关于JavaScript中的replace()方法,它可以接受两个参数,第一个参数为一个正则表达式或者字符串类型的文本,表示待匹配的内容;第二个参数可以是一个替换字符串或者一个函数,表示将匹配到的内容替换成对应的字符串或函数返回的值。 下面是实现JavaScript正则替换的详细攻略: 1. 使用字符串实现替换 当第一个参数是一个字符串类型的文本时,可以直接…

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