Javascript 跟踪按钮点击

Javascript 跟踪按钮点击,javascript,jquery,google-analytics,back,html5-history,Javascript,Jquery,Google Analytics,Back,Html5 History,作为我们新产品指标的一部分,我们需要测量页面上后退按钮的点击次数 由于该站点不是AJAX,我们在“pushState”中没有使用,“popState”在浏览器中单击返回时不会触发 捕获后退按钮事件的唯一目的是注册分析事件 在谷歌上搜索了几个小时,并尝试了几种不同的解决方案后,我的答案是空的——奇怪的是,javascript似乎不适合这样的任务 话虽如此,这不是一个有效的回答:)您将如何处理这样的要求 请注意-赏金奖励的答案并没有解决我的问题,但由于我的努力,我已经授予了赏金。在这种情况下,这是最

作为我们新产品指标的一部分,我们需要测量页面上后退按钮的点击次数

由于该站点不是AJAX,我们在“pushState”中没有使用,“popState”在浏览器中单击返回时不会触发

捕获后退按钮事件的唯一目的是注册分析事件

在谷歌上搜索了几个小时,并尝试了几种不同的解决方案后,我的答案是空的——奇怪的是,javascript似乎不适合这样的任务

话虽如此,这不是一个有效的回答:)您将如何处理这样的要求


请注意-赏金奖励的答案并没有解决我的问题,但由于我的努力,我已经授予了赏金。在这种情况下,这是最好的答案。

您可以捕获
窗口。在beforeUnload()
上,使用cookies存储每次backbutton激发时的后退按钮点击次数,您可以更新cookie。试试看


使用您可以实现的popstate和Cookie 我使用了一个名为

并将它们导入到您的页面

这是进口货

<script src="/jqueries/jquery.cookie.js"></script>
它的juzz是一个粗略的代码,您可以根据需要制作它,它将创建
pushstate

将此添加到脚本中

HTML中只有演示内容

<input type="text" id="t1" />
<input type="text" id="t2" />
<input type="text" id="t3" />
<input type="text" id="t4" />
<input type="text" id="t5" />
很快。像这样为别人申报

这样做是可能的

这部分是获取传递的url值,这里t1、t2将获取与url关联的值

var ourl = "", t1 = "", t2 = "";
if (window.history.replaceState) {
    ourl = document.URL.toString();
    var url = document.URL.toString().replace('http://', '');
    var cnt = 0;
    for (i = 0; i < url.length; i++) {
        if (url[i] == '/') {
            cnt++;
        }
        else if (cnt == 2) {
            t1 += url[i];
        }
        else if (cnt == 3) {
            t2 += url[i];
        }
    }
}
var ourl=“”,t1=“”,t2=“”;
if(window.history.replaceState){
ourl=document.URL.toString();
var url=document.url.toString().replace('http://','';
var-cnt=0;
对于(i=0;i
我不确定是否有任何快捷方式,但如果没有其他方法,您可以尝试以下逻辑

若你们不能直接测量浏览器后退按钮的点击量,你们可以在你们的网站上测量总后退和后退点击量。你可以减去它,得到你的值

使用此代码

$('a').on('click', function(e) {
        if ($(this).attr('href') != 'javascript:void(0)') { // condition to check if its redirect href 
            e.preventDefault();
            localStorage.setItem('website_called', true);
            location.href = $(this).attr('href');
        }
    });

    window.onload(function() {
        if ((document.referrer).indexOf('yoursite.com') != -1 && localStorage.setItem('website_called') == false) {
            var backButtonUsed = localStorage.setItem('backButtonUsed');
            backButtonUsed = backButtonUsed + 1;
            localStorage.setItem('backButtonUsed', backButtonUsed);
        }
        localStorage.setItem('website_called', false);
    });

我认为您必须实现并使用gooogle analytics
track
函数作为回调函数如何在
localStorage
中保留一堆URL,然后比较
位置
referer
和堆栈中上次访问的url,以推断用户是从网站内的另一个页面返回的?我认为,正如您所说,只使用历史api要简单得多;你可能会将后退按钮与(再次)自愿点击链接相混淆@TonimichelCaubit是的,这取决于目标是衡量用户从页面返回(无论如何)还是比较后退按钮与其他导航方式的使用情况。(即导航模式与UI交互模式)。感谢您的回复!所以,这里的交易-我们试图衡量导航“不友好”,这意味着一些指标,后退按钮(不是后退,而是实际的浏览器后退)就是其中之一。就History API而言,我一直在尝试实现它(使用Modernizer、History.js甚至是普通的HTML5)——但是除非我使用“pushstate”,否则“popstate”和“statechange”不会启动,这意味着我需要将整个站点导航转换为AJAX。。。我遗漏了什么吗?据我所知,
window.onbeforeunload()
在我离开页面时启动,而不仅仅是单击后退按钮。然后使用
popstate
cookies
将对您有所帮助。HTML%具有该功能,请尝试。这肯定会对你有帮助。好吧,据我所知,并且已经做过实验,
'popstate'
只有在前面加上pushstate时才会触发-你的处理程序永远不会触发。
pushstate
然后触发,如果没有
pushstate
,则不会启用后退按钮。你的观点是什么?好吧,为了有一个pushstate,我需要调整我的导航,我特别指出这是对一个分析事件的过度使用。我们又回到了起点。我在答案中添加了代码,这可能会有所帮助。检查语法并根据您的要求进行修改,我也可以从服务器访问日志中推断出来—组装一个流并确定用户是否后退—但这不是我要找的。我想知道用户何时单击后退按钮而不是使用网站的内置导航。我不确定您想要什么,但如果您想要浏览器后退按钮被单击的次数,您可以在localStorage->backButtonUsed中进行检查,因为只有当浏览器的后退按钮被单击时,它才会增加website_called flag将为false。或者,如果您希望跟踪单击后退按钮的页面,您可以在window.unload事件中写入window.load代码,并在localstorage值递增的位置写入代码
var ourl = "", t1 = "", t2 = "";
if (window.history.replaceState) {
    ourl = document.URL.toString();
    var url = document.URL.toString().replace('http://', '');
    var cnt = 0;
    for (i = 0; i < url.length; i++) {
        if (url[i] == '/') {
            cnt++;
        }
        else if (cnt == 2) {
            t1 += url[i];
        }
        else if (cnt == 3) {
            t2 += url[i];
        }
    }
}
$('a').on('click', function(e) {
        if ($(this).attr('href') != 'javascript:void(0)') { // condition to check if its redirect href 
            e.preventDefault();
            localStorage.setItem('website_called', true);
            location.href = $(this).attr('href');
        }
    });

    window.onload(function() {
        if ((document.referrer).indexOf('yoursite.com') != -1 && localStorage.setItem('website_called') == false) {
            var backButtonUsed = localStorage.setItem('backButtonUsed');
            backButtonUsed = backButtonUsed + 1;
            localStorage.setItem('backButtonUsed', backButtonUsed);
        }
        localStorage.setItem('website_called', false);
    });