javascript 新浪背投廣告實(shí)現(xiàn)代碼
更新時(shí)間:2009年07月07日 14:59:04 作者:
新浪的好多廣告代碼被廣大站長(zhǎng)廣為流傳,大家如果有時(shí)間可以去看看,他們的代碼都是寫(xiě)出類(lèi)的,不少的好東西。
今天查看了下新浪的js代碼,發(fā)現(xiàn)一個(gè)背投的廣告類(lèi)代碼,不論是從學(xué)習(xí)角度還是使用角度都是不錯(cuò)的,但發(fā)現(xiàn)了一個(gè)問(wèn)題,會(huì)被屏蔽的。
下面是具體的js類(lèi)代碼
/*
輪播背投類(lèi) RotatorPB v3.1
Update by Dakular <shuhu@staff.sina.com.cn> 2008-8-25
格式:new RotatorPB(廣告數(shù)組)
說(shuō)明:第一次訪問(wèn)隨機(jī)出現(xiàn),以后訪問(wèn)順序輪播;自動(dòng)過(guò)濾過(guò)期廣告;cookie時(shí)間24小時(shí);商業(yè)廣告數(shù)量不足時(shí)不顯示
*/
if(typeof(RotatorPB)!='function'){
var RotatorPB=function (rad){
this.ary = new Array();
this.date = new Date();
this.w = rad.width;
this.h = rad.height;
this.num = rad.num;
this.o = rad.length;
this.id = RotatorPB.id++;
this.m = 'rpb_'+this.id;
this.n = new Array();
this.L = new Date();
this.e = 0;
var f;
var D = false;
var nn = 0;
//過(guò)濾無(wú)效廣告
for(var i=0; i<rad.length; i++){
var start = RotatorPB.strToDate(rad[i][2].replace('<startdate>','').replace('</startdate>',''));
var end = RotatorPB.strToDate(rad[i][3].replace('<enddate>','').replace('</enddate>',''),true);
if(this.date>start && this.date<end && (this.num==null || this.ary.length<this.num) ){
this.ary.push([rad[i][0], rad[i][1], rad[i][4]]);
}
}
this.o = this.ary.length;
//取id
for(var i=0;i<this.o;i++){
f=this.m+'_'+(i+1);
g=RotatorPB.G(f);
if(g!=''){
this.n[i]=g;
D=true;
}else {
this.n[i]=0;
}
}
if(!D){
var r=Math.ceil(Math.random()*this.o);
var t=this.m+'_'+r;
RotatorPB.S(t,this.L.getTime(),1440);
this.e=r;
if(this.o==1){RotatorPB.S('s_dl',r,1440);}
//return r;
}else {
var R=this.n.join(',').split(',');
var k=R.sort();
var max=Number(k[k.length-1]);
var min=Number(k[0]);
var F;
for(var i=0;i<this.n.length;i++){
if(max==this.n[i]){
F=i+1;
break;
}
}
if(typeof(F)!='undefined'){
G=this.m+'_'+F;
H=Number(RotatorPB.G(G));
I=F%this.o+1;
J=this.m+'_'+I;
RotatorPB.S(J,this.L.getTime(),1440);
if(this.o==1){
I=-RotatorPB.G('s_dl');
if(I==0){I=1;RotatorPB.S('s_dl',1,1440);}
RotatorPB.S('s_dl',I,1440);
}
this.e=I;
//return I;
}
}
//Show AD
if(this.e==0 || this.ary.length==0) return; //如果沒(méi)有廣告則不顯示
if(this.e==-1) return; //當(dāng)只有一個(gè)廣告時(shí):始終顯示第一個(gè)/奇數(shù)次刷新顯示
var n = this.e-1;
var btsrc = this.ary[n][0];
var bturl = this.ary[n][1];
var bttype = btsrc.substring(btsrc.length-3).toLowerCase();
if(bttype=='.js'){ //js
document.write('<script language="javascript" type="text/javascript" src="'+btsrc+'"></scr'+'ipt>'); return;
}else if(bttype!='htm' && bttype!='tml'){
sinabturl = "http://d1.sina.com.cn/d1images/pb/pbv4.html?"+bturl+"${}"+bttype+"${}"+btsrc;
}else{
sinabturl = btsrc;
}
try{
aryADSeq.push("openWindowBack()");
}catch(e){
openWindowBack();
}
if(this.ary[n][2]!=""){ //監(jiān)測(cè)計(jì)數(shù)
var oImg = new Image();
oImg.src = this.ary[n][2];
}
};
RotatorPB.id=1;
RotatorPB.G=function (N){
var c=document.cookie.split("; ");
for(var i=0;i<c.length;i++){
var d=c[i].split("=");
if(d[0]==N)return unescape(d[1]);
}return '';
};
RotatorPB.S=function (N,V,Q){
var L=new Date();
var z=new Date(L.getTime()+Q*60000);
document.cookie=N+"="+escape(V)+"; path=/; expires="+z.toGMTString()+";";
};
RotatorPB.strToDate = function(str,ext){
var arys = new Array();
arys = str.split('-');
var newDate = new Date(arys[0],arys[1]-1,arys[2],9,0,0);
if(ext){
newDate = new Date(newDate.getTime()+1000*60*60*24);
}
return newDate;
}
var openWindowBack = function(){
var popUpWin2 = open(sinabturl, (window.name!="popUpWin2")?"popUpWin2":"", "width=1,height=1,top=4000,left=3000");
}
};
具體的調(diào)用代碼:
<script src="rotator_pb.js"></script>
<SCRIPT language=javascript type=text/javascript>
//<![CDATA[
var rpb = new Array();
rpb.num = 2; //輪播數(shù)量
<!--2220E7B88D58-->//背投廣告創(chuàng)意
rpb.push(["http://img.jb51.net/demo/images/beitou.jpg", "http://www.dbjr.com.cn", "<startdate>2009-4-15</startdate>", "<enddate>2009-8-15</enddate>", ""]);
<!--$$ litong/2009-4-15 ~ 2009-8-15/B $-->
new RotatorPB(rpb);
//]]>
</SCRIPT>
上面的beitou.jpg是圖片的地址,后面的是鏈接, 開(kāi)始日期 結(jié)束日期什么的大家參考下就可以了。
下面是具體的js類(lèi)代碼
復(fù)制代碼 代碼如下:
/*
輪播背投類(lèi) RotatorPB v3.1
Update by Dakular <shuhu@staff.sina.com.cn> 2008-8-25
格式:new RotatorPB(廣告數(shù)組)
說(shuō)明:第一次訪問(wèn)隨機(jī)出現(xiàn),以后訪問(wèn)順序輪播;自動(dòng)過(guò)濾過(guò)期廣告;cookie時(shí)間24小時(shí);商業(yè)廣告數(shù)量不足時(shí)不顯示
*/
if(typeof(RotatorPB)!='function'){
var RotatorPB=function (rad){
this.ary = new Array();
this.date = new Date();
this.w = rad.width;
this.h = rad.height;
this.num = rad.num;
this.o = rad.length;
this.id = RotatorPB.id++;
this.m = 'rpb_'+this.id;
this.n = new Array();
this.L = new Date();
this.e = 0;
var f;
var D = false;
var nn = 0;
//過(guò)濾無(wú)效廣告
for(var i=0; i<rad.length; i++){
var start = RotatorPB.strToDate(rad[i][2].replace('<startdate>','').replace('</startdate>',''));
var end = RotatorPB.strToDate(rad[i][3].replace('<enddate>','').replace('</enddate>',''),true);
if(this.date>start && this.date<end && (this.num==null || this.ary.length<this.num) ){
this.ary.push([rad[i][0], rad[i][1], rad[i][4]]);
}
}
this.o = this.ary.length;
//取id
for(var i=0;i<this.o;i++){
f=this.m+'_'+(i+1);
g=RotatorPB.G(f);
if(g!=''){
this.n[i]=g;
D=true;
}else {
this.n[i]=0;
}
}
if(!D){
var r=Math.ceil(Math.random()*this.o);
var t=this.m+'_'+r;
RotatorPB.S(t,this.L.getTime(),1440);
this.e=r;
if(this.o==1){RotatorPB.S('s_dl',r,1440);}
//return r;
}else {
var R=this.n.join(',').split(',');
var k=R.sort();
var max=Number(k[k.length-1]);
var min=Number(k[0]);
var F;
for(var i=0;i<this.n.length;i++){
if(max==this.n[i]){
F=i+1;
break;
}
}
if(typeof(F)!='undefined'){
G=this.m+'_'+F;
H=Number(RotatorPB.G(G));
I=F%this.o+1;
J=this.m+'_'+I;
RotatorPB.S(J,this.L.getTime(),1440);
if(this.o==1){
I=-RotatorPB.G('s_dl');
if(I==0){I=1;RotatorPB.S('s_dl',1,1440);}
RotatorPB.S('s_dl',I,1440);
}
this.e=I;
//return I;
}
}
//Show AD
if(this.e==0 || this.ary.length==0) return; //如果沒(méi)有廣告則不顯示
if(this.e==-1) return; //當(dāng)只有一個(gè)廣告時(shí):始終顯示第一個(gè)/奇數(shù)次刷新顯示
var n = this.e-1;
var btsrc = this.ary[n][0];
var bturl = this.ary[n][1];
var bttype = btsrc.substring(btsrc.length-3).toLowerCase();
if(bttype=='.js'){ //js
document.write('<script language="javascript" type="text/javascript" src="'+btsrc+'"></scr'+'ipt>'); return;
}else if(bttype!='htm' && bttype!='tml'){
sinabturl = "http://d1.sina.com.cn/d1images/pb/pbv4.html?"+bturl+"${}"+bttype+"${}"+btsrc;
}else{
sinabturl = btsrc;
}
try{
aryADSeq.push("openWindowBack()");
}catch(e){
openWindowBack();
}
if(this.ary[n][2]!=""){ //監(jiān)測(cè)計(jì)數(shù)
var oImg = new Image();
oImg.src = this.ary[n][2];
}
};
RotatorPB.id=1;
RotatorPB.G=function (N){
var c=document.cookie.split("; ");
for(var i=0;i<c.length;i++){
var d=c[i].split("=");
if(d[0]==N)return unescape(d[1]);
}return '';
};
RotatorPB.S=function (N,V,Q){
var L=new Date();
var z=new Date(L.getTime()+Q*60000);
document.cookie=N+"="+escape(V)+"; path=/; expires="+z.toGMTString()+";";
};
RotatorPB.strToDate = function(str,ext){
var arys = new Array();
arys = str.split('-');
var newDate = new Date(arys[0],arys[1]-1,arys[2],9,0,0);
if(ext){
newDate = new Date(newDate.getTime()+1000*60*60*24);
}
return newDate;
}
var openWindowBack = function(){
var popUpWin2 = open(sinabturl, (window.name!="popUpWin2")?"popUpWin2":"", "width=1,height=1,top=4000,left=3000");
}
};
具體的調(diào)用代碼:
復(fù)制代碼 代碼如下:
<script src="rotator_pb.js"></script>
<SCRIPT language=javascript type=text/javascript>
//<![CDATA[
var rpb = new Array();
rpb.num = 2; //輪播數(shù)量
<!--2220E7B88D58-->//背投廣告創(chuàng)意
rpb.push(["http://img.jb51.net/demo/images/beitou.jpg", "http://www.dbjr.com.cn", "<startdate>2009-4-15</startdate>", "<enddate>2009-8-15</enddate>", ""]);
<!--$$ litong/2009-4-15 ~ 2009-8-15/B $-->
new RotatorPB(rpb);
//]]>
</SCRIPT>
上面的beitou.jpg是圖片的地址,后面的是鏈接, 開(kāi)始日期 結(jié)束日期什么的大家參考下就可以了。
您可能感興趣的文章:
- javascript實(shí)現(xiàn)類(lèi)似于新浪微博搜索框彈出效果的方法
- js實(shí)現(xiàn)類(lèi)似新浪微博首頁(yè)內(nèi)容漸顯效果的方法
- 仿新浪微博登陸郵箱提示效果的js代碼
- js實(shí)現(xiàn)的仿新浪微博完美的時(shí)間組件升級(jí)版
- Js仿新浪微博首頁(yè)內(nèi)容滾動(dòng)
- js 新浪的一個(gè)圖片播放圖片輪換效果代碼
- javascript實(shí)現(xiàn)在下拉列表中顯示多級(jí)樹(shù)形菜單的方法
- javascript簡(jiǎn)單實(shí)現(xiàn)滑動(dòng)菜單效果的方法
- Javascript仿新浪游戲頻道鼠標(biāo)懸停顯示子菜單效果
相關(guān)文章
新浪剛打開(kāi)頁(yè)面出來(lái)的全屏廣告代碼
新浪剛打開(kāi)頁(yè)面出來(lái)的全屏廣告代碼...2007-04-04js 對(duì)聯(lián)廣告、漂浮廣告封裝類(lèi)(IE,FF,Opera,Safari,Chrome
JavaScript 對(duì)聯(lián)廣告、漂浮廣告封裝類(lèi))2009-11-11點(diǎn)擊下載鏈接 彈出頁(yè)面實(shí)現(xiàn)代碼
點(diǎn)擊下載地址鏈接 彈出頁(yè)面實(shí)現(xiàn)代碼,可以用來(lái)彈出廣告商的廣告。2009-10-10仿百度聯(lián)盟對(duì)聯(lián)廣告實(shí)現(xiàn)代碼
仿百度聯(lián)盟對(duì)聯(lián)廣告源代碼展示,主要使用現(xiàn)代瀏覽器都支持的position:fixed屬性,并專(zhuān)門(mén)針對(duì)ie6做了最大限度的兼容性處理2014-08-08