对js代码不熟悉,而且又很讨厌多浏览器兼容的问题,就把代码加上写代码的理由贴上,一是备忘,免的被浏览器兼容再坑。二积累下js编写思路。
历经了10版演变成现在的模样。
外部代码
var bitadv = "autosense";//附加到windows对象时变量名
var tcount = 0;//测试部分事件的计数器
function unitTest(showcontent) {
document.getElementById("test1").innerHTML = document.getElementById("test1").innerHTML + showcontent;//在一个test1的div中将需要展示的测试信息展示
};
(function (winobj, winvarobj) {
//---------------------------------对象缩编定义区-------------------------------------------减小变量名子,减轻js文件的大小
var win = window;
var isIE= (!!window.ActiveXObject || "ActiveXObject" in window)?true:false;//判断是否是ie浏览器,ie11不能使用头部信息的MSIE判断了
var dom = win.document;
var addEvent = win.addEventListener ? win.addEventListener : win.attachEvent;//简化绑定事件的代码
var _$ = function (id) { return dom.getElementById(id); };//减少代码大小的缩写手段
//配置挂载全局对象属性
if (!winobj[winvarobj]) {
winobj[winvarobj] = function () { };
}
var globalwin = winobj[winvarobj];
var advhostpage = null;
var advbase = null;
var user = null;
var nasConfig = null;
var advPositionSet = null;
var scriptId = "nas-js-";
var generateId = "";
var posId = "nas-pos-";
var maxLeaveTimespan = 300000;//5分钟
var adRequestUrlDmain = "http://autosense.bitauto.com/service"; //后端服务请求根地址
//------------------------------窗体级别定义区---------------------------------------------
if (!globalwin.inited) {
globalwin.inited = true;
//基础对象
advbase = {
guid: function () {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid;
},
getComputedStyle: function (domobj) {//重写这个方法不使用公共API是因为ie的低版本浏览器不支持此方法,万恶的IE
var coordinate = { width: 0, height: 0 };
if (win.getComputedStyle) {
var styleobj = win.getComputedStyle(domobj, null);
coordinate.height = styleobj.height;
coordinate.width = styleobj.width;
} else {
coordinate.height = (domobj.currentStyle.height != "auto") ? domobj.currentStyle.height : domobj.offsetHeight;
coordinate.width = (domobj.currentStyle.width != "auto") ? domobj.currentStyle.width : domobj.offsetWidth;
}
return coordinate;
},
formatDate: function (dateobj) {
return dateobj.getFullYear() + "-" + (dateobj.getMonth() + 1) + "-" + dateobj.getDay() + " " + dateobj.getHours() + ":"
+ dateobj.getMinutes() + ":" + dateobj.getSeconds() + " " + dateobj.getMilliseconds();
},
getClientInfo: function () {
var brower = ''; //浏览器类型
var screenWidth = window.screen.width; //分辨率 宽度
var screenHeight = window.screen.height; //分辨率 高度
var bitadvbrower = {};
var ua = navigator.userAgent.toLowerCase();
//alert(ua);
var s;
if (isIE) {//因为ie11的头部信息变化了,所以需要多一部分处理来识别浏览器
s = ua.match(/msie ([\d.]+)/);
s ? (bitadvbrower.ie = s[1]) : (bitadvbrower.ie ="11");
//alert(bitadvbrower.ie)
}
else {
(s = ua.match(/firefox\/([\d.]+)/)) ? bitadvbrower.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? bitadvbrower.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? bitadvbrower.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? bitadvbrower.safari = s[1] : 0;
}
//alert(bitadvbrower)
if (bitadvbrower.ie) brower= 'IE: ' + bitadvbrower.ie;
if (bitadvbrower.firefox) brower = 'Firefox: ' + bitadvbrower.firefox;
if (bitadvbrower.chrome) brower = 'Chrome: ' + bitadvbrower.chrome;
if (bitadvbrower.opera) brower = 'Opera: ' + bitadvbrower.opera;
if (bitadvbrower.safari) brower = 'Safari: ' + bitadvbrower.safari;
return {brower: brower
, screenWidth: screenWidth
, screenHeight: screenHeight
};
},
deleteVar: function (globalvarname) {
if (globalwin.advhostpage.candelete) {
try {//ie低版本浏览器的delete方法存在bug,造成行为和其他浏览器不一致,所以加一个try
delete win[globalvarname];
}
catch (ex) {
globalwin.advhostpage.candelete = false;
win[globalvarname] = null;
};
} else {
win[globalvarname] = null;
};
}
};
globalwin.advbase = advbase;
generateId = advbase.guid();
posId = posId + generateId;
scriptId = scriptId + generateId;
//页面对象初始化
advhostpage = {
pageid: "",
candelete:true,
pageHeartbeatStop:false,
pageRequestTime: new Date,
referer: win.location.href,//逻辑要求 dom.referrer,
href: win.location.href,
isscolling: false,
pageLeaveTime: null,
pageLeaveTimespan:0,
//鼠标横坐标
mx: 0,
//鼠标纵坐标
my: 0,
//广告展示信息发送
sendAdMsg: function () {
//tcount++;
//unitTest("<br>3-tcount:" + tcount);//unitTest单元测试信息输出
//alert("发送区")
if (globalwin.user.isleav)//离开状态不检测展示状态
return;
if (advhostpage.isscolling)//滚动状态不检测展示状态
return;
//alert("广告监测区")
globalwin.advPositionSet.checkwrap();
globalwin.advPositionSet.decideShow();
var arr = globalwin.advPositionSet.getViewAds();
var viewurl = globalwin.nasConfig.urlitem[1].viewadssrc + "?lt=4&pageid=" + advhostpage.pageid + "&userid=" + globalwin.user.userid
+ "&mx=" + advhostpage.mx + "&my=" + advhostpage.my;
for (var i = 0; i < arr.length; i++) {
if (!arr[i].issend) {
viewurl = viewurl + "&posid=" + arr[i].generateId + "&wl=" + arr[i].wraplegal+"&ct="+globalwin.advbase.formatDate(new Date);
advhostpage.loadJs(viewurl, function () { }, null, scriptId, null);
//unitTest("<br>4-url:" + viewurl);
//unitTest("<br>5-adx:" + arr[i].x + "-ady:" + arr[i].y);
arr[i].issend = true;
};
};
},
heartbeat: function () {
//alert("心跳函数");
if (!advhostpage.isscolling) {
// alert("发送小心");
advhostpage.sendAdMsg();
}
setTimeout(advhostpage.heartbeat, 200);//产生心跳效果
if (advhostpage.pageLeaveTimespan > maxLeaveTimespan) {//超时即发出页面关闭通知
var closeurl = globalwin.nasConfig.urlitem[2].leavesrc + "?lt=5&pageid=" + advhostpage.pageid + "&userid=" +
globalwin.user.userid + "&ct=" + globalwin.advbase.formatDate(new Date);
advhostpage.loadJs(closeurl, function () { }, null, scriptId, null);
};
},
//打开页面
pageStart: function () {
var brower=globalwin.advbase.getClientInfo();
var requesturl = globalwin.nasConfig.urlitem[4].pageshowsrc + "?lt=3&pageid=" + advhostpage.pageid + "&userid=" +
globalwin.user.userid + "&bt=" + brower.brower + "&bw=" + brower.screenWidth + "&bh=" + brower.screenHeight + "&ct=" +
globalwin.advbase.formatDate(globalwin.advhostpage.pageRequestTime);
advhostpage.loadJs(requesturl, function () { }, null, scriptId, null);
},
//页面关闭或者刷新
pageClose: function () {
var closeurl = globalwin.nasConfig.urlitem[2].leavesrc + "?lt=5&pageid=" + advhostpage.pageid + "&userid=" +
globalwin.user.userid + "&ct=" + globalwin.advbase.formatDate(new Date);
advhostpage.loadJs(closeurl, function () { }, null, scriptId, null);
},
//页面滚动
pageScroll: function () {
//每隔一秒检测一次是否在滚动
if (!advhostpage.isscolling) {
setTimeout(function () {
advhostpage.isscolling = false;
globalwin.advPositionSet.advs.forEach(function (ad) {
ad.lasttime = new Date;
}, this);
}, 250);
advhostpage.isscolling = true;
globalwin.advPositionSet.advs.forEach(function (ad) {
ad.lasttime = new Date;
}, this);
};
},
pageBlur: function () {
globalwin.user.isleav = true;
advhostpage.pageLeaveTime = new Date;
},
pageFocus: function () {
globalwin.user.isleav = false;
if (advhostpage.pageLeaveTime)
advhostpage.pageLeaveTimespan = (new Date) - advhostpage.pageLeaveTime.getTime();
},
loadJs: function (url, callback, charset, id, wrapid) {//由于广告可能存在跨域问题,所以不使用ajax方式
if (_$(id)) {
var jsnode = _$(id);
try { jsnode.parentNode.removeChild(jsnode); }
catch (err) { }
}
var scriptText = dom.createElement("script");
scriptText.type = "text/javascript";
if (id) scriptText.id = id;
if (charset) scriptText.charset = charset;
if (scriptText.readyState) {
scriptText.onreadystatechange = function () {
if (scriptText.readyState == "loaded" || scriptText.readyState == "complete") {
scriptText.onreadystatechange = null;
if (callback) callback();
}
};
}
else {
scriptText.onload = function () {
if (callback) callback();
};
}
scriptText.src = url;
if (_$(wrapid)) {
_$(wrapid).appendChild(scriptText);
}
else
dom.body.appendChild(scriptText);
},
getMouseXY: function (ev) {
ev = ev || win.event;
if (ev.pageX || ev.pageY) {
globalwin.advhostpage.mx = ev.pageX, globalwin.advhostpage.my = ev.pageY;
}
else {
globalwin.advhostpage.mx = ev.clientX + document.body.scrollLeft - document.body.clientLeft,
globalwin.advhostpage.my = ev.clientY + document.body.scrollTop - document.body.clientTop
};
// unitTest("mx:" + globalwin.advhostpage.mx + "--my:" + globalwin.advhostpage.my);
}
};
advhostpage.pageid = globalwin.advbase.guid();
globalwin.advhostpage = advhostpage;
//用户对象
user = {
userid: "",
//是否离开了窗体
isleave: false,
//获取指定名称的cookie的值
getCookie: function (cookieName) {
var arrStr = dom.cookie.split("; ");
if (arrStr) {
for (var i = 0; i < arrStr.length; i++) {
var temp = arrStr[i].split("=");
if (temp[0] == cookieName)
return unescape(temp[1]);
}
} else
return "no id";
},
setCookie: function (cookieName, val) {
var exdate = new Date();
dom.cookie = cookieName + "=" + encodeURIComponent(val) + ";max-age=315360000;domain="+win.document.domain+";path=/";
},
inituser: function () {
user.userid = user.getCookie("userid");
if (!user.userid) {
user.setCookie("userid", globalwin.advbase.guid());
user.userid = user.getCookie("userid");
}
}
};
globalwin.user = user;
//广告业务配置对象
nasConfig = {
//外部配置项userid、pageid、posid、referurl、unionid、siteid、adnum、type、titlelen、contentlen
configitem: [{ name: "autosense_uid", val: "" }, { name: "autosense_adsiteid", val: "" }, { name: "autosense_width", val: "" },
{ name: "autosense_height", val: "" }, { name: "autosense_arraytype", val: "" }, { name: "autosense_border", val: "" },
{ name: "autosense_headbj", val: "" }, { name: "autosense_headtitle", val: "" }, { name: "autosense_contentbj", val: "" },
{ name: "autosense_contenttitle", val: "" }, { name: "autosense_contenttext", val: "" }, { name: "autosense_contentlink", val: "" },
{ name: "autosense_contentkeyword", val: "" }, { name: "autosense_contentlen", val: "" }, { name: "autosense_isshowhead", val: "" },
{ name: "autosense_cbid", val: "" }, { name: "autosense_cityid", val: "" }, { name: "autosense_adnum", val: "" }],
kv:new Object,
//需要使用url
urlitem: [{ iframesrc: adRequestUrlDmain + "/getad.ashx" }, { viewadssrc: adRequestUrlDmain + "/log.ashx" },
{ leavesrc: adRequestUrlDmain + "/log.ashx" }, { firstloadadsrc: adRequestUrlDmain + "/log.ashx" }, { pageshowsrc: adRequestUrlDmain + "/log.ashx" }],
//载入配置
loadConfig: function () {
var configitems = nasConfig.configitem;
for (var i = 0; i < configitems.length; i++) {
if (win[configitems[i].name]) {
configitems[i].val = win[configitems[i].name];
nasConfig.kv[configitems[i].name] = configitems[i].val;
globalwin.advbase.deleteVar(configitems[i].name);
};
};
}
};
globalwin.nasConfig = nasConfig;
advPositionSet = {
advs: new Array(),
push: function (advobj) {
advPositionSet.advs.push(advobj);
},
checkwrap: function () {
for (var i = 0; i < advPositionSet.advs.length; i++) {
advPositionSet.advs[i].checkwrap(advPositionSet.advs[i].advdomid, advPositionSet.advs[i]);
}
},
decideShow: function () {
for (var i = 0; i < advPositionSet.advs.length; i++) {
if (advhostpage.isscolling)//保证滚动状态下不检测展示
return;
var target = advPositionSet.advs[i];
if (target.issend)
continue;
var zeroy = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
var zerox = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;
//完全展示
//由于ajax请求会高变部分元素高宽,需要重新即时计算坐标
var xy = target.getXY(dom.getElementById(target.advdomid));
target.x = xy.x;
target.y = xy.y;
//unitTest("<br>--->>show==zerox:" + zerox + "-zeroy:" + zeroy);
//unitTest("<br>--->>show==target.x:" + target.x + "-target.y:" + target.y);
//unitTest("<br>--->>show==targetMW:" + (target.x + target.advwidth) + "-targetMH:" + (target.y + target.advheight));
//unitTest("<br>--->>show==zeroMW:" + (zerox + window.screen.availWidth) + "-zeroMH:" + (zeroy + window.screen.availHeight));
//alert("px:" + target.x + "-py:" + target.y + "---zerox:" + zerox + "-zeroy:" + zeroy + "--h:" + (zeroy + window.screen.availHeight));
if ((target.x >= zerox) && (target.y >= zeroy) && ((target.x + target.advwidth) <= (zerox + window.screen.availWidth))
&& ((target.y + target.advheight) <= (zeroy + window.screen.availHeight))) {
target.isview = true;
if (target.viewcount == 0)
target.lasttime = new Date;
target.viewcount++;
var currenttime = new Date;
target.adTimespan = currenttime.getTime() - target.lasttime.getTime();
//unitTest("<br>full");
}
else {
//计算4个1/3要点的位置,任何一个要点在屏幕内都视为展现
var isfind = false;
var xcell = target.advwidth / 3;
var ycell = target.advheight / 3;
var points = [{ x: target.x + xcell, y: target.y + ycell }, { x: target.x + 2 * xcell, y: target.y + ycell },
{ x: target.x + xcell, y: target.y + 2 * ycell }, { x: target.x + 2 * xcell, y: target.y + 2 * ycell }];
for (var i = 0; i < points.length; i++) {
if (isfind) continue;
//unitTest("<br>nofull:px:" + points[i].x + "-py:" + points[i].y);
if ((points[i].x >= zerox) && (points[i].y >= zeroy) && (points[i].x <= (zerox + window.screen.availWidth)) &&
(points[i].y <= (zeroy + window.screen.availHeight))) {
target.isview = true;
isfind = true; //此处用break跳出循环会造成浏览器假死,一直未找到原因
if (target.viewcount == 0)
target.lasttime = new Date;
target.viewcount++;
var currenttime = new Date;
target.adTimespan = currenttime.getTime() - target.lasttime.getTime();
//alert("px:" + points[i].x + "-py:" + points[i].y + "---zerox:" + zerox + "-zeroy:" + zeroy + "--h:" + (zeroy + window.screen.availHeight));
//unitTest("<br>nofull");
};
};
};
};
},
getViewAds: function () {
var viewads = new Array;
for (var i = 0; i < advPositionSet.advs.length; i++) {
if (advPositionSet.advs[i].isview && advPositionSet.advs[i].adTimespan > 1000)
viewads.push(advPositionSet.advs[i]);
};
return viewads;
}
};
globalwin.advPositionSet = advPositionSet;
//需要有外部配置对应参数对象
var wineventconfig = {
//鼠标移动、窗体滚动、鼠标点击
eventitem: [{ name: "load", ev: globalwin.advhostpage.pageStart, isbind: true }, { name: "scroll", ev: globalwin.advhostpage.pageScroll, isbind: true },
{ name: "focus", ev: globalwin.advhostpage.pageFocus, isbind: true }, { name: "blur", ev: globalwin.advhostpage.pageBlur, isbind: true },
{ name: "beforeunload", ev: globalwin.advhostpage.pageClose, isbind: true }],
init: function () {
var bingStand = win.addEventListener ? true : false;
for (var i = 0; i < wineventconfig.eventitem.length; i++) {
var target = wineventconfig.eventitem[i];
//对象结构:autosense_name=true/false
if (win["autosenseglobal_" + target.name]) {
target.isbind = win["autosenseglobal_" + target.name];
};
if (target.isbind) {
addEvent((bingStand ? "" : "on") + target.name, target.ev);//浏览器绑定方式不同,加on的是为了支持低版本ie浏览器
};
};
//由于ie与其他浏览器对鼠标mousemove事件支持对象不同,需作特殊处理
var isbindmousemove = true;
if (win["autosenseglobal_mousemove"]) {
isbindmousemove = win["autosenseglobal_mousemove"];
};
var mouseevent=globalwin.advhostpage.getMouseXY;
if (isbindmousemove) {
if (isIE) {
if (bingStand) {//ie高版本支持标准绑定
dom.addEventListener("mousemove", mouseevent);
} else {
dom.attachEvent("onmousemove", mouseevent);
};
} else {
win.addEventListener("mousemove", mouseevent);//非ie浏览器均采取标准绑定
};
};
}
};
globalwin.wineventconfig = wineventconfig;
};
//--------------------------------临时对象定义区-------------------------------------------
//广告位
var adInfo = {
advPostionId: "",
generateId:"",
advdatas: null,
//广告位绝对坐标
x: 0,
y: 0,
//加载时间
adRequestTime: "",
//加载完成时间
loadOverTime: "",
//广告位的元素id
advdomid: "",
//广告内容数据的请求来源路径
advSrc: "",
//广告位的宽度
advwidth: 0,
//广告位的高度
advheight: 0,
//广告宿主定义样式
advstyle: null,
//广告容器是否显示
wrapshow: 1,
//广告外包元素的宽
wrapwidth: 0,
//广告外包元素的高
wrapheight: 0,
//容器是否合法,高宽不为0,不隐藏
wraplegal: 1,
//容器id
wrapdomid: "",
//广告宿主定义模板
advtemplate: "",
wraptype: "iframe",//广告的外包类型iframe和ins
//上一次展示时间
lasttime: null,
viewcount: 0,
//是否已经展示
isview: false,
//是否已经发送了
issend:false,
//单位毫秒
adTimespan: 0,
//构造后端函数请求地址
makeUrl: function () {
//获取广告的参数:userid、pageid、posid、referurl、unionid、siteid、adnum、type、titlelen、contentlen
var paramas = [{ name: "unionid", val: "autosense_uid", defaultval: "", isencode: false },
{ name: "siteid", val: "autosense_adsiteid", defaultval: "", isencode: false }, { name: "adnum", val: "autosense_adnum", defaultval: "3", isencode: false }
, { name: "type", val: "autosense_type", defaultval: "1", isencode: false }, { name: "titlelen", val: "autosense_titlelen", defaultval: "10", isencode: false },
{ name: "contentlen", val: "autosense_contentlen", defaultval: "", isencode: false }, { name: "border", val: "autosense_border", defaultval: "", isencode: true },
{ name: "width", val: "autosense_width", defaultval: "0", isencode: false }, { name: "height", val: "autosense_height", defaultval: "0", isencode: false },
{ name: "headbj", val: "autosense_headbj", defaultval: "", isencode: true }, { name: "arraytype", val: "autosense_arraytype", defaultval: "29", isencode: false },
{ name: "contentbj", val: "autosense_contentbj", defaultval: "", isencode: true }, { name: "contenttitle", val: "autosense_contenttitle", defaultval: "", isencode: true },
{ name: "contenttext", val: "autosense_contenttext", defaultval: "", isencode: true }, { name: "contentlink", val: "autosense_contentlink", defaultval: "", isencode: true },
{ name: "isshowhead", val: "autosense_isshowhead", defaultval: "0", isencode: false }, { name: "cbid", val: "autosense_cbid", defaultval: "", isencode: false },
{ name: "cityid", val: "autosense_cityid", defaultval: "", isencode: false }];
var url = globalwin.nasConfig.urlitem[0].iframesrc + "?" + "posid=" + adInfo.generateId + "&pageid=" + globalwin.advhostpage.pageid + "&userid=" + globalwin.user.userid + "&referurl=" + globalwin.advhostpage.referer;
for (var i = 0; i < paramas.length; i++) {
if (!globalwin.nasConfig.kv[paramas[i].val])
continue;
if (paramas[i].isencode)
url = url + "&" + paramas[i].name + "=" + encodeURIComponent(globalwin.nasConfig.kv[paramas[i].val] ? globalwin.nasConfig.kv[paramas[i].val] : paramas[i].defaultval);
else
url = url + "&" + paramas[i].name + "=" + (globalwin.nasConfig.kv[paramas[i].val] ? globalwin.nasConfig.kv[paramas[i].val] : paramas[i].defaultval);
};
url = url + (adInfo.jumpurl ? "&jumpurl=" + adInfo.jumpurl : "");
return url;
},
//获取坐标,相对于文档的左上角
getXY: function (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 }
},
//载入广告位
iframeloadtest: function (iframeid, callback) {
var iframeobj = _$(iframeid);
iframeobj.onload = iframeobj.onreadystatechange = function () {
if (this.readyState && this.readyState != 'complete') return;
else {
callback();
}
}
},
loadAdv: function (wrapid) {
function loadoverevent() {
adInfo.loadOverTime = new Date();
var iframeobj = _$(adInfo.advdomid);
var xy = adInfo.getXY(iframeobj);
adInfo.x = xy.x;
adInfo.y = xy.y;
//var firsturl = globalwin.nasConfig.urlitem[3].firstloadadsrc+"?";
//firsturl = firsturl + "&pageid=" + globalwin.advhostpage.pageid + "&posid=" + adInfo.generateId + "&userid=" + globalwin.user.userid + "&x=" +
adInfo.x + "&y=" + adInfo.y +"&ft=" + globalwin.advbase.formatDate(adInfo.adRequestTime) + "&fe=" + globalwin.advbase.formatDate(adInfo.loadOverTime);
// globalwin.advhostpage.loadJs(firsturl, function () { }, null, scriptId, null);
//alert("加载完成");
if (!globalwin.beated) {
globalwin.beated = true;
heartbeat();
//unitTest("<br>2-heartbeat");
};
};
adInfo.advSrc = adInfo.makeUrl();
var wrapdomobj = _$(wrapid);
if (wrapdomobj) {
var iframeobj = document.createElement("iframe");
iframeobj.id = adInfo.advdomid;
iframeobj.name = adInfo.advdomid;
iframeobj.src = adInfo.advSrc;
iframeobj.frameborder = 0;
iframeobj.marginheight = 0;
iframeobj.marginwidth = 0;
iframeobj.scrolling = "no";
iframeobj.width = adInfo.advwidth + "px";
iframeobj.height = adInfo.advheight + "px";
var wrapdomcssobj = globalwin.advbase.getComputedStyle(wrapdomobj);
adInfo.wrapwidth = wrapdomcssobj.width;
adInfo.wrapheight = wrapdomcssobj.height;
adInfo.wrapdomid = wrapid;
wrapdomobj.appendChild(iframeobj);
adInfo.adRequestTime = new Date();
adInfo.iframeloadtest(adInfo.advdomid, loadoverevent);
}
else {
var iframeHtml = '<iframe id="' + adInfo.advdomid + '" name="' + adInfo.advdomid + '" src="' + adInfo.advSrc +
'" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" width="' + adInfo.advwidth + 'px" height="' + adInfo.advheight + 'px"></iframe>';
adInfo.adRequestTime = new Date();
document.write(iframeHtml);
adInfo.iframeloadtest(adInfo.advdomid, loadoverevent);
var domobj = _$(adInfo.advdomid);
if (domobj.parentNode) {
var objstyle = globalwin.advbase.getComputedStyle(domobj.parentNode);
adInfo.wrapx = objstyle.width;
adInfo.wrapy = objstyle.height;
adInfo.wrapdomid = domobj.parentNode.id;
}
}
},
//检测是否已经展示
checkwrap: function (domid,advpobj) {
//判断是否处于iframe中
if ((dom.parentWindow == self) || (typeof (reValue) == "undefined")) {//ie与firefox兼容
//不处于iframe中
if (!_$(domid))
advpobj.wraplegal = 0;
}
else {
//处于iframe中
if (win.innerHeight && win.innerWidth) {
if ((win.innerHeigh < 10) || (win.innerWidth < 10))
advpobj.wraplegal = 0;
}
else {
if ((dom.documentElement.clientHeight < 10) || (dom.documentElement.clientHeight < 10))
advpobj.wraplegal = 0;
}
};
}
};
//---------------------------------------------执行区----------------------------
function initcurrentad() {
adInfo.advdomid = posId;
adInfo.generateId = generateId;
adInfo.advPostionId = adInfo.advdomid;
adInfo.advheight = globalwin.nasConfig.kv["autosense_height"];
adInfo.advwidth = globalwin.nasConfig.kv["autosense_width"];
globalwin.advPositionSet.push(adInfo);//需要放在加载之前
};
function heartbeat() {
setTimeout(globalwin.advhostpage.heartbeat, 1000);
};
//配置脚本执行过程
var actionconfig = [{ name: "inituser", ev: globalwin.user.inituser, isaction: true },
{ name: "initadconfig", ev: globalwin.nasConfig.loadConfig, isaction: true }, { name: "initad", ev: initcurrentad, isaction: true },
{ name: "loadad", ev: adInfo.loadAdv, isaction: true }, { name: "bindEvent", ev: globalwin.wineventconfig.init, isaction: true }];
//执行
for (var runindex = 0; runindex < actionconfig.length; runindex++) {
if (actionconfig[runindex].isaction)
actionconfig[runindex].ev();
};
})(window, bitadv);