javascript対聯広告、浮遊広告パッケージ類、マルチブラウザ対応

14493 ワード

パッケージのJS方法:
function $$(element){

    if(arguments.length>1){

        for(var i=0,elements=[],length=arguments.length;i<length;i++)

            elements.push($$(arguments[i]));

        return elements;

    }

    if(typeof element=="string")

        return document.getElementById(element);

    else

        return element;

}

Function.prototype.bind=function(object){

    var method=this;

    return function(){

        method.apply(object,arguments);

    }

}

var Class={

    create:function(){

        return function(){

            this.initialize.apply(this,arguments);

        }

    }

}

Object.extend=function(destination,resource){

    for(var property in resource){

        destination[property]=resource[property];    

    }

    return destination;

}

//     

var float_ad=Class.create();

float_ad.prototype={

    initialize:function(id,content,top,left,width){

        document.write('<div id='+id+' style="position:absolute;">'+content+'</div>');

        this.id=$$(id);

        this.top=top;

        if(!!left){

            this.id.style.left="8px";    

        }else{

            this.id.style.left=(document.documentElement.clientWidth-width-8)+"px";

            window.onresize=function(){

                this.id.style.left=(document.documentElement.clientWidth-width-8)+"px";

            }.bind(this);

        }

        this.id.style.top=top+"px";

        

        this.interId=setInterval(this.scroll.bind(this),20);

    },

    scroll:function(){

        this.stmnStartPoint = parseInt(this.id.style.top, 10);

        this.stmnEndPoint =document.documentElement.scrollTop+ this.top;

        if(navigator.userAgent.indexOf("Chrome")>0){

            this.stmnEndPoint=document.body.scrollTop+this.top;    

        }

        if ( this.stmnStartPoint != this.stmnEndPoint ) {

                this.stmnScrollAmount = Math.ceil( Math.abs( this.stmnEndPoint - this.stmnStartPoint ) / 15 );

                this.id.style.top = parseInt(this.id.style.top, 10) + ( ( this.stmnEndPoint<this.stmnStartPoint ) ? -this.stmnScrollAmount : this.stmnScrollAmount )+"px";

        }

    }

}

//     

var move_ad=Class.create();

move_ad.prototype={

    initialize:function(imgOption,initPosition,delay){

        this.imgOptions=Object.extend({url:"",link:"",width:120,height:120},imgOption||{});

        this.adPosition=Object.extend({left:40,top:120},initPosition||{});

        this.delay =delay;

        this.step = 1;

        this.herizonFlag=true;

        this.verticleFlag=true;

        this.id="ad_move_sg";

        var vHtmlString="<div id='"+this.id+"' style='position:absolute; left:"+this.adPosition.left+"px; top:"+this.adPosition.top+"px; width:"+this.imgOptions.width+"px;";

        vHtmlString+=" height:"+this.imgOptions.height+"px; z-index:10;'><a href='"+this.imgOptions.link+"' target='_blank'><img src='"+this.imgOptions.url+"' width="+this.imgOptions.width+" height="+this.imgOptions.height+" style='border:none;' /></a></div>";

        //vHtmlString+=" height:"+this.imgOptions.height+"px; z-index:10;'><img src='"+this.imgOptions.url+"' width="+this.imgOptions.width+" height="+this.imgOptions.height+" style='border:none;' /></div>";

        document.write(vHtmlString);

        this.id=$$(this.id);

        this.intervalId=setInterval(this.scroll.bind(this),this.delay);

        this.id.onmouseover=this.stop.bind(this);

        this.id.onmouseout=this.start.bind(this);

    },

    scroll:function(){

        var L=T=0;

        var B=document.documentElement.clientHeight-this.id.offsetHeight;

        var R=document.documentElement.clientWidth-this.id.offsetWidth;

        this.id.style.left=this.adPosition.left+document.documentElement.scrollLeft+"px";

        this.id.style.top=this.adPosition.top+document.documentElement.scrollTop+"px";

        this.adPosition.left =this.adPosition.left + this.step*(this.herizonFlag?1:-1); 

        if (this.adPosition.left < L) { this.herizonFlag = true; this.adPosition.left = L;} 

        if (this.adPosition.left > R){ this.herizonFlag = false; this.adPosition.left = R;} 

        this.adPosition.top =this.adPosition.top + this.step*(this.verticleFlag?1:-1); 

        if(this.adPosition.top <= T){ this.verticleFlag=true; this.adPosition.top=T;}

        if(this.adPosition.top >= B){ this.verticleFlag=false; this.adPosition.top=B; }

    },

    stop:function(){

        clearInterval(this.intervalId);    

    },

    start:function(){

        this.intervalId=setInterval(this.scroll.bind(this),this.delay);    

    }

}
 
呼び出し:
/* 

       

      ID,       ,              , 

         (true   ,false   ),             

*/ 

new float_ad("ad_l","<img src='/System/uploads/allimg/090504/2346400.gif' />",50,true,64); 

new float_ad("ad_r","<img src='/System/uploads/allimg/090504/2346400.gif' />",50,false,64); 



/* 

       

       url         URL  (   ),link       ,alt      ,width     (   ,  120),heihgt     (   ,  120) 

                  ,   left top   

           ,0   ,         

*/ 

new move_ad({url:"/System/uploads/allimg/090504/2346400.gif",link:"http://www.yuanchuang.net",alt:"    “2009  ·       ”      ",width:200,height:200},{left:40,top:160},20); 
参考:http://www.yuanchuang.net/content/21872.html