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

Nic*_*ick 3 javascript browser firefox

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

我们的想法是将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;

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

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

And*_*ris 17

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

window.location.replace("#hash");
Run Code Online (Sandbox Code Playgroud)

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