WEB开发网
开发学院网页设计JavaScript JavaScript 浮动广告类 阅读

JavaScript 浮动广告类

 2009-08-05 20:13:32 来源:WEB开发网   
核心提示:/** File: KM.AD.js* Description: KaiMo advertisement Class* Author: Dnawo* Date: 2009-07-22** e.g.** var ad = new KM.AD();* ad.LeftTop = new KM.ADInfo(&q

/*
*   File: KM.AD.js
*   Description: KaiMo advertisement Class
*   Author: Dnawo
*   Date: 2009-07-22
*
*   e.g.
*
*   var ad = new KM.AD();
*   ad.LeftTop = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.RightTop = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.LeftMiddle = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.RightMiddle = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.LeftBottom = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.RightBottom = new KM.ADInfo("<a href='#' target='_blank'><img src='http://www.cncms.com/ad.gif' border='0' /></a>",137,182);
*   ad.Start();
*/
(function(){
     
   //Namespace
   if(!window.KM)window.KM={};
   if(typeof window.KM != "object")throw new Error("'window.KM' is not an object!");
  
   //Model Class
   KM.ADInfo = function(html,width,height)
   {
     this.Html = html || "";
     this.Width = typeof width == "number" ? width : 0;
     this.Height = typeof height == "number" ? height : 0;
   }
   KM.ADInfo.PRototype.toString = function(){
     return "Html:" + this.Html + "\r\n" +
         "Width:" + this.Width + "\r\n" +
         "Height:" + this.Height + "\r\n";
   };
  
   //AD Class
   KM.AD = function()
   {
     /*private members*/
    
     //delay time, (milliseconds)
     var _delay = 50;
     //object initialize
     var _initialize = function(html,width,height){
       var div = document.createElement("div");
       div.id = "km_" + (new Date()).getTime();
       div.style.position = "absolute";
       div.style.backgroundColor = "#FFFFFF";
       div.style.overflow = "hidden";
       div.style.top = "0px";
       div.style.left = "0px";
       div.style.width = width + "px";
       div.style.height = height + "px";
       div.innerHTML = html;
       try{document.getElementsByTagName("body").item(0).appendChild(div)}catch(ex){};
          
       return div;
     }
     //delete the unit
     var _deleteUnit = function(text){ return Math.round(("" + text).replace(/(px)$/g,""));};
     //
     var _me = this;
    
     /*public members*/
    
     this.Version = "1.0";
     this.Html = "";
     this.Width = 0;
     this.Height = 0;
    
     this.LeftTop = {}; //type of ADInfo
     this.RightTop = {}; //type of ADInfo
     this.LeftMiddle = {}; //type of ADInfo
     this.RightMiddle = {}; //type of ADInfo
     this.LeftBottom = {}; //type of ADInfo
     this.RightBottom = {}; //type of ADInfo

   this.Start = function(){
       if(this.LeftTop instanceof KM.ADInfo && !this.LeftTop.Element)
         this.LeftTop.Element = _initialize(this.LeftTop.Html,this.LeftTop.Width,this.LeftTop.Height);
       if(this.RightTop instanceof KM.ADInfo && !this.RightTop.Element)
         this.RightTop.Element = _initialize(this.RightTop.Html,this.RightTop.Width,this.RightTop.Height);
       if(this.LeftMiddle instanceof KM.ADInfo && !this.LeftMiddle.Element)
         this.LeftMiddle.Element = _initialize(this.LeftMiddle.Html,this.LeftMiddle.Width,this.LeftMiddle.Height);
       if(this.RightMiddle instanceof KM.ADInfo && !this.RightMiddle.Element)
         this.RightMiddle.Element = _initialize(this.RightMiddle.Html,this.RightMiddle.Width,this.RightMiddle.Height);
       if(this.LeftBottom instanceof KM.ADInfo && !this.LeftBottom.Element)
         this.LeftBottom.Element = _initialize(this.LeftBottom.Html,this.LeftBottom.Width,this.LeftBottom.Height);
       if(this.RightBottom instanceof KM.ADInfo && !this.RightBottom.Element)
         this.RightBottom.Element = _initialize(this.RightBottom.Html,this.RightBottom.Width,this.RightBottom.Height);
        
       var clientWidth = document.documentElement.clientWidth;
       var clientHeight = document.documentElement.clientHeight;
       var scrollTop = document.documentElement.scrollTop;
       var scrollLeft = document.documentElement.scrollLeft;
      
       if(this.LeftTop.Element){
         this.LeftTop.Element.style.top = _deleteUnit(scrollTop) + "px";
         this.LeftTop.Element.style.left = _deleteUnit(scrollLeft) + "px";
       }
       if(this.RightTop.Element){
         this.RightTop.Element.style.top = _deleteUnit(scrollTop) + "px";
         this.RightTop.Element.style.left = _deleteUnit(scrollLeft) + _deleteUnit(clientWidth) - _deleteUnit(this.RightTop.Element.style.width) - 2 + "px";
       }
       if(this.LeftMiddle.Element){
         this.LeftMiddle.Element.style.top = _deleteUnit(scrollTop) + _deleteUnit(clientHeight)/2 - _deleteUnit(this.LeftMiddle.Element.style.height)/2 + "px";
         this.LeftMiddle.Element.style.left = _deleteUnit(scrollLeft) + "px";
       }
       if(this.RightMiddle.Element){
         this.RightMiddle.Element.style.top = _deleteUnit(scrollTop) + _deleteUnit(clientHeight)/2 - _deleteUnit(this.RightMiddle.Element.style.height)/2 + "px";
         this.RightMiddle.Element.style.left = _deleteUnit(scrollLeft) + _deleteUnit(clientWidth) - _deleteUnit(this.RightMiddle.Element.style.width) - 2 + "px";
       }
       if(this.LeftBottom.Element){
         this.LeftBottom.Element.style.top = _deleteUnit(scrollTop) + _deleteUnit(clientHeight) - _deleteUnit(this.LeftBottom.Element.style.height) - 2 + "px";
         this.LeftBottom.Element.style.left = _deleteUnit(scrollLeft) + "px";
       }
       if(this.RightBottom.Element){
         this.RightBottom.Element.style.top = _deleteUnit(scrollTop) + _deleteUnit(clientHeight) - _deleteUnit(this.RightBottom.Element.style.height) - 2 + "px";
         this.RightBottom.Element.style.left = _deleteUnit(scrollLeft) + _deleteUnit(clientWidth) - _deleteUnit(this.RightBottom.Element.style.width) - 2 + "px";
       }
      
       setTimeout(function(){_me.Start();},_delay);
     };
    
     this.Clear = function(){
       if(this.LeftTop.Element)this.LeftTop.Element.parentNode.removeChild(this.LeftTop.Element);
       if(this.RightTop.Element)this.RightTop.Element.parentNode.removeChild(this.RightTop.Element);
       if(this.LeftMiddle.Element)this.LeftMiddle.Element.parentNode.removeChild(this.LeftMiddle.Element);
       if(this.RightMiddle.Element)this.RightMiddle.Element.parentNode.removeChild(this.RightMiddle.Element);
       if(this.LeftBottom.Element)this.LeftBottom.Element.parentNode.removeChild(this.LeftBottom.Element);
       if(this.RightBottom.Element)this.RightBottom.Element.parentNode.removeChild(this.RightBottom.Element);
     };    
   };
})();

暂时只支持左上、右上、左中、右中、左下、右下六个位置,通过组合可做成对联广告。

IE(6.0)、FF(2.0)、Opera(9.6)测试通过。

Tags:JavaScript 浮动 广告

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接