跟踪后退按钮点击

时间:2014-08-12 14:52:20

标签: javascript jquery google-analytics back html5-history

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

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

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

用谷歌搜索了几个小时,然后尝试了几种不同的解决方案,我出现了空洞 - 奇怪的是,javascript似乎没有配备这样的任务。

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

请注意 - 获得赏金的答案并未解决我的问题,但由于努力,我已经给予了赏金。在这种情况下,这是最好的答案

2 个答案:

答案 0 :(得分:2)

您可以捕获window.onbeforeunload()并使用Cookie来存储每个后退按钮点击的后退按钮点击次数,您可以更新Cookie。试试吧。


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

的插件

并将它们导入您的页面。

这是导入。

<script src="/jqueries/jquery.cookie.js"></script>

这是我使用的代码。

$(window).on('popstate', function () {
    var val = 1;
    if (typeof $.cookie('example') === 'undefined') {
        //no cookie
    } else {
        //have cookie
        val = parseInt($.cookie("example")) + 1;
        $.removeCookie("example");
    }
    $.cookie("example", val, { expires: 7 });
    //alert($.cookie("example"));
});

它的juzz是一个粗略的代码你可以根据自己的需要创建它会创建pushstate

将其添加到脚本中..

HTML中只有DEMO内容

<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" />

这些是没有AJAXify的HTML5 pushstate脚本。试试这些......

    $('#t1').click(function () {
        if (window.history.replaceState) {
            window.history.pushState('', 'Title', '/YourPagename/123/1234');
        }
    });
    $('#t2').click(function () {
        if (window.history.replaceState) {
            window.history.pushState('', 'Title', '/YourPagename/123/12345');
        }
    });
    $('#t3').click(function () {
        if (window.history.replaceState) {
            window.history.pushState('', 'Title', '/YourPagename/123/123456');
        }
    });

很快。为其他人声明这些

通过这种方式是可能的。

这部分是为了获取传递的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];
        }
    }
}

答案 1 :(得分:1)

我不确定是否有任何快捷方式,但如果没有别的办法,你可以尝试遵循逻辑。

如果您无法直接点击浏览器后退按钮,则可以衡量网站的总返回和返回点击次数。你可以减去它并获得你的价值。

使用此代码。

$('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);
    });
相关问题