我要做的是跟踪用户点击Google Adsense。 通过包含Google Adsense脚本标记,可以生成两种类型的广告。
我遇到第二种横幅问题 该链接位于两个iframe内。如果用户的鼠标位于外部iframe上,则跟踪点击非常容易。但是,如果用户点击链接(标记),我实际上无法访问第二个iframe来跟踪点击。因此,如果用户点击横幅中的空白,我的功能也会将其视为点击。原因很明显:Google否认了这一点 我不想操纵谷歌的代码,我只是想跟踪点击。
答案 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);
});
}
}
}