【问题标题】:How to recognize from what page the user has landed on another page?如何识别用户从哪个页面登陆另一个页面?
【发布时间】:2015-12-10 07:07:19
【问题描述】:
Page A
Page B
Page C

如果用户来自page A,请在page C 上做某事(在同一网站内) 如果用户来自page B,请在page C(在同一网站内)上做其他事情

在 JS 中最好的方法是什么? (不要使用document.referrer

【问题讨论】:

  • 您如何定义“最佳”?
  • “不要使用 document.referrer”让我觉得这是一个家庭作业……你试过什么?
  • 注意:我能想到至少有 5 种不同的方法。你需要缩小范围。
  • 对我来说最好的方式是跨浏览器解决方案(我支持IE8++、KIT浏览器-iOS、Android)

标签: javascript


【解决方案1】:

在我看来,有两种不错的解决方案:

  1. 当页面 A 加载页面 C 时,请在 URL 中包含一个变量,该变量实质上是“从页面 A 加载”。 (同样适用于页面 B。)

  2. 加载页面 A 时,设置一个 cookie、localStoragesessionStorage 变量,显示“从页面 A 加载”。 (同样适用于页面 B。)然后在加载页面 C 时,检查变量以查看页面 A 或页面 B 是否是最近打开的页面。 (您可能还想在 cookie、localStorage 或 sessionStorage 上设置超时/过期时间。)

【讨论】:

    【解决方案2】:

    你可以做的是有一个全局变量来保存位置。当您加载页面时。为该变量分配位置

    window.location.href 
    

    document.URL;
    

    另一种选择是使用 cookie。

    【讨论】:

    • 从一个页面切换到另一个页面时,Javascript 意义上的“全局变量”(即存储在 window 中)会丢失。
    • 它不存储在windows中,你从windows获取当前url。 javascript 变量保持不变,因此可以从网站上的多个页面访问。
    • 试试看。你会发现它不是。只要我们谈论的是常规的 Javascript 变量,即当然不是 cookie、本地存储、会话存储等。
    【解决方案3】:

    您的描述没有多大意义(对我来说),尤其是因为您没有包含您正在使用的任何框架/堆栈(这个责任很可能落在)。

    也就是说,我会使用带有会话 getter 和 setter 的变量。您可以解析查询字符串或 URL,将其设置为会话变量,然后在准备好使用时获取该会话变量。

    这里是 how to use javascript 中的会话获取器和设置器

    【讨论】:

    • 假设我没有使用任何框架...我正在寻找一个干净的 js 解决方案。我想做 sessionStorage 回退到旧浏览器的 cookie,但想确定这是否是最好的解决方案......
    【解决方案4】:

    您可以让page Apage B 设置一个cookie,以指示它们所在的页面。然后page C可以检查cookie值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多