最近翻出来的关于统计页面广告点击详细情况的JS

当前为行为层代码,相关入库的服务端代码在此就不列出来啦


我不是原作者,也不知道原作者是谁了,呵呵,根据我本人的需要,添加了一个判断,一个页面只提交第一次的广告点击数据,不重复提交的~

增加了部分注释,由于本人的几个版本IE浏览器都可以正常统计,却有朋友反应说IE6经常容易漏掉点击,关于这点,也无从测试起啊,希望有条件的朋友也可以用用,顺便看看在什么情况下漏掉了点击。


程序代码 程序代码
<SCRIPT LANGUAGE="JavaScript">
<!--
var adsrc = '';
var adlogger_loc = "http://mysuc.com";
var mytjtime = 0;
function ad_click () {
    var srt = new Date().getTime();
    if (mytjtime==0){
        var ad_target_url = '';
        ad_target_url = escape(window.status);
        adlogger_url_image = new Image();
        if(document.all) {adsrc = this.src;}
        //通过地址GET方式提交相关信息
        //spage 点击时的所在页面
        //adpage 点击时链接的地址
        adlogger_url_image.src = adlogger_loc + '/checks.asp?spage=' + escape(document.location.href) + '&adpage=' + escape(adsrc)+"&timeStamp=" + srt;
        mytjtime++;
    }
}

if(typeof window.addEventListener != 'undefined') {
    window.addEventListener('load', adsense_init, false);
} else if(typeof document.addEventListener != 'undefined') {
    document.addEventListener('load', adsense_init, false);
} else if(typeof window.attachEvent != 'undefined') {
    window.attachEvent('onload', adsense_init);
} else {
    if(typeof window.onload == 'function') {
        var existing = onload;
        window.onload = function(){
            existing();
            adsense_init();
        };
    } else {
        window.onload = adsense_init;
    }
}

function adsense_init () {
    var mamaid=0;
    if (document.all) {//在IE环境下
        var el = document.getElementsByTagName("iframe");
        for(var i = 0; i < el.length; i++) {
            if(el[i].src.indexOf('googlesyndication.com') > -1||el[i].src.indexOf('overture.com') > -1||el[i].src.indexOf('alimama.com') > -1) {
                el[i].onfocus = ad_click;
            }
        }
    } else {//在非IE环境下
        window.onunload = doPageExit;
        window.addEventListener('mousemove', getMouse, true);
    }
}

var px,py;

function getMouse(e) {
    px=e.pageX;
    py=e.clientY;
}

function findY(obj) {
    var y = 0;
    while (obj) {
        y += obj.offsetTop; obj = obj.offsetParent;
    }
    return(y);
}

function findX(obj) {
    var x = 0;
    while (obj) {
        x += obj.offsetLeft;
        obj = obj.offsetParent;
    }
    return(x);
}

function doPageExit(e) {//在非IE环境下使用坐标范围判断鼠标点击位置
    ad = document.getElementsByTagName("iframe");
    for (i=0; i<ad.length; i++) {
        var adLeft = findX(ad[i]);
        var adTop = findY(ad[i]);
        var inFrameX = (px > (adLeft - 10) && px < (parseInt(adLeft) + parseInt(ad[i].width) + 15));
        var inFrameY = (py > (adTop - 10) && py < (parseInt(adTop) + parseInt(ad[i].height) + 10));
        if (inFrameY && inFrameX) {
            adsrc = ad[i].src;
            ad_click();
        }
    }
}
//-->
</SCRIPT>
发表评论
Name (required)
PassWord(游客发言不需要密码.)
验证码
验证码
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.