javascript 新浪背投广告实现代码

今天查看了下新浪的js代码,发现一个背投的广告类代码,不论是从学习角度还是使用角度都是不错的,但发现了一个问题,会被屏蔽的。
下面是具体的js类代码


代码如下:

/*
轮播背投类 RotatorPB v3.1
Update by Dakular <shuhu@staff.sina.com.cn> 2008-8-25
格式:new RotatorPB(广告数组)
说明:第一次访问随机出现,以后访问顺序轮播;自动过滤过期广告;cookie时间24小时;商业广告数量不足时不显示
*/
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;
        //过滤无效广告
        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; //如果没有广告则不显示
        if(this.e==-1) return; //当只有一个广告时:始终显示第一个/奇数次刷新显示
        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]!=""){ //监测计数
            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");
    }
};

具体的调用代码:


代码如下:

<script src="rotator_pb.js"></script>
<SCRIPT language=javascript type=text/javascript>
//<![CDATA[
var rpb = new Array();
rpb.num = 2; //轮播数量
<!--2220E7B88D58-->//背投广告创意
rpb.push(["http://img.jb51.net/demo/images/beitou.jpg", "http://www.jb51.net", "<startdate>2009-4-15</startdate>", "<enddate>2009-8-15</enddate>", ""]);
<!--$$ litong/2009-4-15 ~ 2009-8-15/B $-->
new RotatorPB(rpb);
//]]>
</SCRIPT>

上面的beitou.jpg是图片的地址,后面的是链接, 开始日期 结束日期什么的大家参考下就可以了。

(0)

相关推荐

  • javascript实现在下拉列表中显示多级树形菜单的方法

    本文实例讲述了javascript实现在下拉列表中显示多级树形菜单的方法.分享给大家供大家参考.具体如下: 这里演示在下拉列表框中显示分级的菜单,在很多网站都可以看到的效果,很实用,下拉列表框中的选项是利用JS控制输出,如果你有更好的办法不用JS来显示,那最好了,因为像这种菜单用JS来实现,多多少少有点麻烦. 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

  • js实现的仿新浪微博完美的时间组件升级版

    这个时间组件以前发过一次,上次那个很烂,这次有时间了,把这个升级了,性能更好,完美兼容所有浏览器,ie6下拉select档不住的问题 也解决了.总之,差不多也算一个完美的时间组件, 在线demo nothingDemo 突然发现下面的代码里面有个运行代码可以看在线demo,就再最下面 然后贴出源码,只有一点简单的说明 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht

  • Javascript仿新浪游戏频道鼠标悬停显示子菜单效果

    本文实例讲述了Javascript仿新浪游戏频道鼠标悬停显示子菜单效果,分享给大家供大家参考.具体如下: 这里演示使用JS实现的网页栏目分类菜单,从新浪游戏频道扣下来的,操作方式类似于滑动门的效果,鼠标无需点击,只需把鼠标放在一级主菜单上,就可显示出二级分类菜单,这弹出的这个二级菜单中,实际上又重新进行了分类,可以说整体上,这是一款支持三级分类的网站菜单,目前新浪游戏还在用的效果哦. 先来看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/js-gam

  • 仿新浪微博登陆邮箱提示效果的js代码

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8

  • js 新浪的一个图片播放图片轮换效果代码

    核心代码 复制代码 代码如下: function slide(src,link,text,target,attr,desc) {   this.desc = desc   this.src = src;   this.link = link;   this.text = text;   this.target = target;   this.attr = attr;   if (document.images) {     this.image = new Image();   }   thi

  • js实现类似新浪微博首页内容渐显效果的方法

    本文实例讲述了js实现类似新浪微博首页内容渐显效果的方法.分享给大家供大家参考.具体分析如下: 要点一: if(list_li.length>=1){ list.insertBefore(li,list_li[0]); }else{ list.appendChild(li); } 从在前面插入新内容,如果没有新内容,就是在后面插入新内容. 要点二: var height=li.offsetHeight; li.style.height='0'; 取得li的高度,然后再li的高度设置为0,因为高度

  • Js仿新浪微博首页内容滚动

    然后在新浪微博首页仍然在使用哦,可能我写的代码还不是最佳优化状态,但是我觉得这已经不错了. 仿新浪微博首页内容滚动 body{background:#efc;} ------------------------------------- --------------------------------------- --------------------------------------- /*--------------新鲜事滚动----------------*/ var _num=_n

  • javascript简单实现滑动菜单效果的方法

    本文实例讲述了javascript简单实现滑动菜单效果的方法.分享给大家供大家参考.具体如下: 整个javascript代码共42行,其中主要函数Slide代码26行,可以改进哦! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&

  • javascript实现类似于新浪微博搜索框弹出效果的方法

    本文实例讲述了javascript实现类似于新浪微博搜索框弹出效果的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml

  • javascript 新浪背投广告实现代码

    今天查看了下新浪的js代码,发现一个背投的广告类代码,不论是从学习角度还是使用角度都是不错的,但发现了一个问题,会被屏蔽的.下面是具体的js类代码 复制代码 代码如下: /* 轮播背投类 RotatorPB v3.1 Update by Dakular <shuhu@staff.sina.com.cn> 2008-8-25 格式:new RotatorPB(广告数组) 说明:第一次访问随机出现,以后访问顺序轮播:自动过滤过期广告:cookie时间24小时:商业广告数量不足时不显示 */ if(

  • javascript背投广告代码的完善

    背投广告,既然被称为广告,那如何才能让广告主的钱花得实在,花得乐意呢? 我们可以增加判断,如果该弹出窗口被浏览器拦截,则只要用户点击页面就触发 window.open 事件,这样一般不会拦截,浏览器会认为这是用户的默认行为. 代码可编写如下: 复制代码 代码如下: var $E = YAHOO.util.Event;  var adPopup;  var popAd = function(sURL,sName,sFeatures,bReplace) {      if (adPopup) ret

  • JavaScript常用的弹出广告及背投广告实现方法

    本文实例讲述了JavaScript常用的弹出广告及背投广告实现方法.分享给大家供大家参考.具体分析如下: 弹出广告和背景广告在大网站用的比较多,也是站长的必备代码,本代码段中包括弹出窗口广告以及背投广告两种形式,根据自己的需要,你可以随意选择. 注:这类广告不建议大家用,大多浏览器都会把此类AD拦截,只为大家学习之用. 复制代码 代码如下: <html> <head> <title>JavaScript常用的弹出广告及背投广告代码</title> </

  • js获取新浪天气接口的实现代码

    js获取新浪天气接口的实现代码 <!doctype html> <html class="no-js fixed-layout"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>天气</title> </

  • js新浪首页可关闭背景效果代码

    新浪首页可关闭背景效果代码 if(typeof(sina)!="object"){var sina={}} sina.$=function(i){if(!i){return null} return document.getElementById(i)};var sinaFlash=function(V,x,X,Z,v,z,i,c,I,l,o){var w=this;if(!document.createElement||!document.getElementById){return

  • JS实现新浪博客左侧的Blog管理菜单效果代码

    本文实例讲述了JS实现新浪博客左侧的Blog管理菜单效果代码.分享给大家供大家参考,具体如下: 这里介绍新浪博客左侧的Blog管理菜单,我们变通一下,如果你在设计程序,那么本款菜单用到后台管理中想必应该很合适吧,图片是调用新浪的,用了比较多的图片,你用的时候最好是下载到本地,以免新浪哪天改版了,你就傻了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-sina-blog-left-menu-style-codes/ 具体代码如下: <ht

  • JS实现仿新浪黄色经典滑动门效果代码

    本文实例讲述了JS实现仿新浪黄色经典滑动门效果代码.分享给大家供大家参考.具体如下: 这是一款仿新浪网的滑动门,黄色经典,操作舒适度确实很舒服,不亏是门户哦,长度和宽度这个就要自己修改啦,布局紧凑合理,本人喜欢的风格. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-f-sina-jd-move-style-demo/ 具体代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trans

  • JQuery与Ajax调用新浪API获取短网址的代码

    复制代码 代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>获取新浪短网址</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> <!--<script type

  • PHP 抓取新浪读书频道的小说并生成txt电子书的代码

    复制代码 代码如下: /* Author: Yang Yu <yangyu@sina.cn> */ //想看什么电子书,先去新浪读书搜索,然后填入对应的参数即可 //http://vip.book.sina.com.cn/ //电子书参数 $array_book[0] = 38884; //小说id $array_book[1] = 22172; //章节起始id $array_book[2] = 32533; //章节结束id $array_book[3] = '中国特种部队生存实录:狼牙'

随机推荐