我目前正在使用jQuery Cookies插件,根据观看者点击的页面哪一侧,会应用Cookie:
<div id="leftClick">Click Me</div>
<div id="rightClick">Click Me</div>
问题是一旦存储了cookie,它就不会在没有刷新的情况下更新。因此,如果观看者点击了正确的元素,但在刷新页面之前,那么在左侧元素之后,尽管cookie已被_left覆盖,但它仍然会向右报告,因为页面尚未刷新。有没有一种方法可以在没有页面刷新的情况下实时读取cookie?
<script type="text/javascript">
var readCookie = $.cookie('whichSide');
$(document).ready(function() {
$('#leftClick').click(function(){
$.cookie('whichSide', 'left_');
});
$('#rightClick').click(function(){
$.cookie('whichSide', 'right_');
});
$('#login').click(function(){
_gaq.push(['_trackEvent', 'viewerChose', readCookie+'side']);
});
});
</script>
答案 0 :(得分:5)
这是因为您将cookie的值存储在readCookie
变量中。更新cookie时,此变量不会自动更新,这就是您在引用cookie时获取旧值的原因。
你可能想要这样的东西:
$('#login').click(function(){
_gaq.push(['_trackEvent', 'viewerChose', $.cookie('whichSide')+'side']);
});
答案 1 :(得分:3)
您只读取一次readCookie值,然后在.click函数中使用该值。尝试在点击事件中阅读它,这样您就可以使用最新的值:
$('#login').click(function(){
var readCookie = $.cookie('whichSide');
_gaq.push(['_trackEvent', 'viewerChose', readCookie+'side']);
});
答案 2 :(得分:2)
在您自己缓存cookie的值时从代码中删除它。
var readCookie = $.cookie('whichSide');
将代码更改为此处,您可以在每次需要时在$("#login").click()
处理程序中获取cookie值的新副本,而不是引用以前保存的值:
<script type="text/javascript">
$(document).ready(function() {
$('#leftClick').click(function(){
$.cookie('whichSide', 'left_');
});
$('#rightClick').click(function(){
$.cookie('whichSide', 'right_');
});
$('#login').click(function(){
_gaq.push(['_trackEvent', 'viewerChose', $.cookie('whichSide')+'side']);
});
});
</script>