【问题标题】:JavaScript: How do I change the Hash in the Address Bar WITHOUT adding an entry to history?JavaScript:如何在不向历史添加条目的情况下更改地址栏中的哈希?
【发布时间】:2009-12-13 10:24:04
【问题描述】:

我正在尝试从别人的问题中扩展一个想法,但遇到了困难。

想法是将 utm_source(来自广告活动)动态插入 url 哈希,让 Google Analytics 跟踪页面,然后删除哈希。 (我们不想保留哈希值,因为:1. 这是一个重复的页面,以及 2. 如果用户将其添加为书签并返回,它看起来就像是另一个广告点击)

这是几乎可以工作的代码:

// 保存旧哈希 varcampaignSource = "一些横幅广告"; var oldHash = document.location.hash; // 将活动数据添加到哈希中 document.location.hash = 'utm_source=' + escape(campaignSource); pageTracker._setAllowAnchor(true); pageTracker._trackPageview(); // 恢复旧哈希: document.location.hash = oldHash;

需要注意的是,它会在每次更改时向历史记录(后退按钮)添加两个条目。

问题:如何让浏览器跳过哈希更改的历史记录?

【问题讨论】:

    标签: javascript firefox browser


    【解决方案1】:

    如果您想跳过将条目添加到历史记录,请改用window.location.replace

    window.location.replace("#hash");
    

    这样,地址栏上的 URL 将被替换,而不是向浏览器历史记录对象添加新条目

    【讨论】:

      【解决方案2】:

      您可以保留第二个哈希更改并直接使用

      history.back();
      

      退一步。这导致后退按钮中没有新页面,而是前进按钮上的一个页面,当用户导航到其他地方时,该页面将消失。

      我认为您无法阻止哈希更改保留在历史记录中。

      【讨论】:

        猜你喜欢
        • 2014-03-13
        • 2013-05-16
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-02
        相关资源
        最近更新 更多