提问者:小点点

返回页面时将重置脚本


我在Javascript中构建了一个函数,它允许聚焦输入字段(类似于Google帐户登录)。 脚本的工作原理如下:

输入字段中有一个标题。 只要点击对象并写入内容,标题就会缩小并出现在字段上方。 如果您完全删除文本并单击输入字段,焦点将消失。

在脚本中,如下所示:

const reg_inputs = document.querySelectorAll(".reg-input");

function addcl() {
  const parent = this.parentNode.parentNode;

  parent.classList.add("focus");
}

function remcl() {
  const parent = this.parentNode.parentNode;

  if (this.value == "") {
    parent.classList.remove("focus");
    return false;
  }
}

reg_inputs.forEach((input) => {
  input.addEventListener("focus", addcl);
  input.addEventListener("blur", remcl);
  return true;
});

问题是当用户点击一个按钮时会被带到另一个页面。 如果用户现在返回到旧页面,标题将再次出现在输入字段中,并覆盖正常输入的文本。 这看起来很不友好,应该修复。 我想剧本会在返回时重置。 有人能帮帮我吗?


共1个答案

匿名用户

网页是无状态的。

这意味着,如果您在网页上运行脚本,然后离开该页面,然后返回到该页面,则该页面将被加载,就像脚本尚未运行一样(因为它还没有运行)。

但是,有一些方法可以向浏览器报告状态:

  • 使用锚点#(例如example.com/my-page.html#my-state)
  • 使用查询字符串(例如example.com/my-page.html?state=my-state)
  • 使用WebStorage(LocalStorageSessionStorage)

WebStorage API使用起来相对简单。

您唯一需要记住的是,每个WebStorage条目只能接受字符串数字(而不是数组对象)。

即使这样也不是什么大问题,因为我们可以使用JSON来声明数组和对象。