【问题标题】:Understand (via JavaScript) if the current page is reached using browser's history了解(通过 JavaScript)是否使用浏览器的历史记录到达当前页面
【发布时间】:2009-10-22 14:38:32
【问题描述】:

如标题:有一种方法可以让我知道,客户端,当前页面是通过浏览浏览器的历史记录、跟随链接还是回发来显示的?

【问题讨论】:

    标签: javascript browser browser-history


    【解决方案1】:

    从技术上讲,您无法读取用户的浏览器历史记录。这是出于隐私问题。但是,您可以做一些事情来确定用户是否通过页面引荐来源网址被带到您的页面。如果是回发,您可以输出服务器端变量。

    在 javascript 中获取引用非常简单

    var referrer = document.referrer;
    

    判断是否为回发(C#)

    var isPostback = <%= IsPostBack %>
    

    历史问题有点复杂。最好的解决方法是将您的页面设置为立即过期。

    Response.Cache.SetNoServerCaching();
    Response.ExpiresAbsolute = DateTime.Now;
    

    但这些都是相对松散的解决方案。你为什么想要这种行为?

    【讨论】:

    • 我在服务器端注册的消息 (asp.net) 上有问题。用户编译一个表单,发送到服务器,服务器执行它的 serverthing 并为它找到的无效内容注册一个 javascript 警报。然后,如果用户导航回历史并再次转发,则该消息将再次出现。我认为如果我可以注册一个 js 函数来检查这种情况,我可以绕过或不绕过警报。我不知道您的解决方案是否适用于我的场景,但我会尝试 :) 谢谢
    【解决方案2】:

    您可以为每个页面添加日期戳。如果时间戳太远,用户可能使用了后退按钮。但如果浏览器没有从缓存加载页面,这将不起作用。

    等等,您也可以在网址中添加时间戳。现在您将页面的时间戳与引荐来源网址的时间戳进行比较。

    我正在考虑使用 cookie 的解决方案,但我现在找不到。有人吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多