JavaScript:如何在不添加历史记录条目的情况下更改地址栏中的哈希值?

时间:2009-12-13 10:24:05

标签: javascript firefox browser

我正试图从别人的问题中扩展一个想法,并遇到困难。

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

以下是几乎的代码:

// save the old hash
var campaignSource = "Some Banner Ad";
var oldHash = document.location.hash;

// add campaign data to the hash
document.location.hash = 'utm_source=' + escape(campaignSource);
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
// restore the old hash:
document.location.hash = oldHash;

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

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

2 个答案:

答案 0 :(得分:17)

如果您想跳过将条目添加到历史记录中,请改用<{1}}

window.location.replace

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

答案 1 :(得分:1)

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

history.back();

退一步。这导致后退按钮中没有新页面,但前进按钮上的一个页面将在用户导航到其他位置时消失。

我认为你不能阻止哈希变化粘在历史中。