网络广告js备忘【2】

内部代码,因为广告采用iframe方式加载,所以分为内外代码

var adinfo = {
    advpostionid: "",
    pageid: "",
    userid:"",
    adcss:"at"
}
var win = window;//缩减代码
var dom = win.document;
//广告业务配置对象
adconfig = { 
    //外部配置项
configitem: [{ name: "autosense_view_adids", val: "" }, { name: "autosense_view_adpositions", val: "" }, { name: "autosense_view_keywordids", val: "" }, { name: "autosense_view_groupindexes", val: "" }, { name: "autosense_view_unionid", val: "" }, { name: "autosense_view_adsiteid", val: "" }, { name: "autosense_view_addomainid", val: "" }, { name: "autosense_view_url", val: "" }, { name: "autosense_view_ip", val: "" }, { name: "autosense_view_areacodeid", val: "" }, { name: "autosense_view_hitkeywordids", val: "" }, { name: "autosense_view_hitkeywordpids", val: "" }],
    kv: new Object,
    //载入配置
    loadConfig: function () {
        var configitems = adconfig.configitem;
        for (var i = 0; i < configitems.length; i++) {
            if (win[configitems[i].name]) {
                adconfig.configitems[i].val = win[configitems[i].name];
                adconfig.kv[configitems[i].name] = adconfig.configitems[i].val;               
            };
        };
    }
};
function addEvent(domobj, eventType, handler, argsObject) {
    var eventHandler = handler;
    if (argsObject) {
        eventHandler = function (e) {
            handler.call(argsObject, e);//调整事件执行时的对象
            return true;
        };
    };
//和外部事件绑定不同,因为采用和外部相同的绑定方式后总是会造成事件执行两次,不知道为什么缩写代码会有这样的问题
 if (window.attachEvent)
        domobj.attachEvent("on" + eventType, eventHandler);
    else
        domobj.addEventListener(eventType, eventHandler, false);
};
function clickadv(ev) {
    // alert("ie6 is ok");
    var url = "";
    if (!this.original) {
        this.original = this.href;//保存原始href
    };
    url = this.original;//this指向点击的a标签,和事件绑定时的方式有关
    ev = ev || window.event;
    var mx, my;
    if (ev.pageX || ev.pageY) {
        mx = ev.pageX, my = ev.pageY
    } else {
        mx = ev.clientX + document.body.scrollLeft - document.body.clientLeft;
        my = ev.clientY + document.body.scrollTop - document.body.clientTop;
    }
    url = url + "&mx=" + mx + "&my=" + my;
    this.href = url;
   // alert(url);
};
var _$c = function (cssname) {
    if (dom.getElementsByClassName)//低版本浏览器不支持此方法
        return dom.getElementsByClassName(cssname);
    else {
        var all = dom.all;
        var objs = new Array;
        for (var i = 0; i < all.length; i++) {
            if (all[i].className == cssname)
                objs.push(all[i]);
        };
        if (objs.length == 0)
            objs = null;
        return objs;
    };
};
function adBindEvent() {
    //var advs = _$c(adinfo.adcss);
    var advs = dom.getElementsByTagName("A");
    if (advs) {
        for (var i = 0; i < advs.length; i++) {
            if (advs[i]) {
                addEvent(advs[i], "click", clickadv, advs[i]);
            };
        };
    };
};
function getAdPositionInfo() {
    var pairs = location.search.substring(1).split("&");
    var count = 0;
    for (var i = 0; i < pairs.length; i++) {
        if (count == 2) break;
        var pos = pairs[i].indexOf('=');
        if (pos == -1) continue;
        var name = pairs[i].substring(0, pos);
        if (name == "posid") {
            adinfo.advpostionid = pairs[i].substring(pos + 1);
            count++;
            continue;
        };
        if (name == "pgid") {
            adinfo.pageid = pairs[i].substring(pos + 1);
            count++;
            continue;
        };
        if (name == "userid") {
            adinfo.userid = pairs[i].substring(pos + 1);
            count++;
            continue;
        };
    };
};
function getxy(domobj) {
    var x = 0, y = 0;
    if (domobj.getBoundingClientRect) {
        var box = domobj.getBoundingClientRect();
        var D = document.documentElement;
        x = box.left + Math.max(D.scrollLeft, document.body.scrollLeft) - D.clientLeft;
        y = box.top + Math.max(D.scrollTop, document.body.scrollTop) - D.clientTop
    }
    else {
        for (; domobj != document.body; x += domobj.offsetLeft, y += domobj.offsetTop, domobj = domobj.offsetParent) { }
    }
    return { x: x, y: y };
};
//配置脚本执行过程
var actionconfig = [{ name: "initadconfig", ev: getAdPositionInfo, isaction: true }, { name: "bindEvent", ev: adBindEvent, isaction: true }];
//执行
for (var runindex = 0; runindex < actionconfig.length; runindex++) {
    if (win[actionconfig[runindex].name])
        actionconfig[runindex].isaction = win[actionconfig[runindex].name];
    if (actionconfig[runindex].isaction)
        actionconfig[runindex].ev();
}

Firefox使用DOM规范,所以\n这样的不可见字符也会作为dom的一个元素

例如

<div id="t1"><div>1</div></div>

其中t1的DOM子元素是1个

然而

<div id="t1"><div>1<div>
</div>
t1的DOM子元素是2个,因为不可见字符 \n也被作为了一个dom元素
IE不存在这个问题。而且,只要是使用DOM规范的浏览都和火狐一样的效果。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值