使用JavaScript跟踪Google Adsense

时间:2015-01-14 20:44:38

标签: javascript jquery iframe adsense

我要做的是跟踪用户点击Google Adsense。 通过包含Google Adsense脚本标记,可以生成两种类型的广告。

  • 图像处理器(单击横幅会将用户重定向到广告)
  • 包含一个或多个链接的横幅(用户必须单击链接才能重定向)

我遇到第二种横幅问题 该链接位于两个iframe内。如果用户的鼠标位于外部iframe上,则跟踪点击非常容易。但是,如果用户点击链接(标记),我实际上无法访问第二个iframe来跟踪点击。因此,如果用户点击横幅中的空白,我的功能也会将其视为点击。原因很明显:Google否认了这一点 我不想操纵谷歌的代码,我只是想跟踪点击。

3 个答案:

答案 0 :(得分:1)

我不确定AdSense是否允许这样做,因为您可以通过跟踪广告点击(例如内容锁定)来滥用系统。此外,您将遇到不同的边缘情况 - 例如您提出的问题 - 这就是我通常建议您使用以下内容的原因:

您可能要做的是将Google Analytics与AdSense相关联(只需1-2次点击即可),这样您就可以轻松导航到Google Analytics信息中心的发布商→AdSense,以查看展示次数,点击次数和其他AdSense数据。您始终可以创建可以访问此数据的自定义报告。

如果您真的想跟踪点击次数,可以结帐使用模糊事件的this iframe tracker来确定鼠标光标当前悬停的元素/ iframe。

答案 1 :(得分:0)

假设横幅包含类.banner,您可以完成以下跟踪:

$('.banner').on('click', function(e) {
  ga('send','event',{eventCategory:'BannerClick', eventAction:e });
});

答案 2 :(得分:0)

我有以下发现有用的POC代码:

function adClickEvent() {

// Set the name of the hidden property and the change event for visibility
var hidden, visibilityChange;
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
    hidden = "hidden";
    visibilityChange = "visibilitychange";
} else if (typeof document.msHidden !== "undefined") {
    hidden = "msHidden";
    visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
    hidden = "webkitHidden";
    visibilityChange = "webkitvisibilitychange";
}


function handleVisibilityChange() {
    if (document[hidden]) {
        if (timeEntered && (new Date().getTime() - timeEntered) < 3000) {
            /* click on ad */ 
            timeEntered = new Date().getTime();
        }
    }
}

var timeEntered = 0;
if (typeof document.addEventListener === "undefined" || hidden === undefined) {
    // not supported
} else {
    var AdId = '';
    document.addEventListener(visibilityChange, handleVisibilityChange, false);
    var AdElements = document.querySelectorAll('[data-google-query-id]');
    for (var i = 0; i < AdElements.length; i++) {
        AdElements[i].addEventListener('mouseenter', function (e) {
            timeEntered = new Date().getTime();
            AdId = e.target.getAttribute('id');
        });
        AdElements[i].addEventListener('mouseleave', function (e) {
            setTimeout(function () {
                timeEntered = 0;
                AdId = e.target.getAttribute('id');
            }, 500);
        });
    }
}
}