右下角弹出(淡出)消息(js)

    技术2022-05-11  84

     /*网页右下角消息提示*//**---------------------------------------------------------------------------* browser determine;*/{  var ua = navigator.userAgent; var $IE = (navigator.appName == "Microsoft Internet Explorer"); var $IE5 = $IE && (ua.indexOf('MSIE 5') != -1); var $IE5_0 = $IE && (ua.indexOf('MSIE 5.0') != -1); var $Gecko = ua.indexOf('Gecko') != -1; var $Safari = ua.indexOf('Safari') != -1; var $Opera = ua.indexOf('Opera') != -1; var $Mac = ua.indexOf('Mac') != -1; var $NS7 = ua.indexOf('Netscape/7') != -1; var $NS71 = ua.indexOf('Netscape/7.1') != -1;  if ($Opera) {  $IE = true;  $Gecko = false;  $Safari =  false; } if ($IE5) {         $IE = true;         $Gecko = false;         $Safari =  false; }}function $_t(root,tag,id){ var ar=root.getElementsByTagName(tag); for (var i=0;i<ar.length;i++){  if (ar[i].id==id) return ar[i]; } return null;}function _(root){  var ids=arguments; var i0=0;  if (typeof(root) == 'string') root = document; else i0=1;  for (var i=i0;i<ids.length;i++){  var s=root.getElementsByTagName("*");   var has=false;  for (var j=0;j<s.length;j++){   if (s[j].id==ids[i]){    root=s[j];    has=true;    break;   }  }  if (!has) return null; } return root;}//util

    function $dele(o,fn,rv){  var r = function (){    var s=arguments.callee;    var args = [];  for (var i=0;i<s.length;i++) args[i]=s[i];  var argStr = args.join(",");  if (argStr.length > 0) argStr=","+argStr;    var callStr="s.thiz[s.fn]("+argStr+")";  var v=eval(callStr);      if (s.rv!=null) {   return s.rv;  } else {   return v;  } }  r.thiz=o; r.fn=fn; r.rv=rv;  return r;}

    function $ge(e){ if (e!=null) return e; if ($IE) {  return window.event; } else return e;}

    /*** get event for a element;*/function $gte(e,ev){ if (!e.getElementById) e=e.ownerDocument; if ($IE) {  return ev!=null ? ev : e.parentWindow.event; } else {  return ev;  throw new Error("this method can only execute in IE"); }}function $addEL(n,e,l,b){  if ($IE){  if (n["$__listener_"+e]==null){   var lst=function (e){        var f=arguments.callee;    var ar=f.fList;        e=$ge(e);    for (var i=0;i<ar.length;i++){          ar[i](e);    }   }   lst.fList=[];      n["$__listener_"+e]=lst;   n["on"+e]=n["$__listener_"+e];     }  var fList=n["$__listener_"+e].fList;  fList[fList.length]=l;   } else {  n.addEventListener(e,l,b); }}function $cancelEvent (e) { if ($IE) {  e.returnValue = false;  e.cancelBubble = true; } else  e.preventDefault();};function $cpAttr(o,p){ for (var i in p){  var s=p[i];  o[i]=s; } return o;}function $getValue(v,d){ return v==null ? d : v;}var $gv=$getValue;

    var $dom={ parseInt : function(s) {  if (s == null || s == '' || typeof(s)=='undefined')   return 0;

      return parseInt(s); }, getClientSize : function(n){  if ($IE){   //ts("this is ie");   var s= {x:n.clientLeft,y:n.clientTop};   s.l=s.x;   s.t=s.y;   s.r=n.clientRight;   s.b=n.clientBottom;      s.w=n.clientWidth;   s.h=n.clientHeight;      //tr("calculated client size");      return s;  } else {   var t=n.style;   if (t.borderLeftWidth.length==0 || t.borderTopWidth.length==0 || t.borderRightWidth.length==0 || t.borderBottomWidth.length==0){        var l=n.offsetWidth;    t.borderLeftWidth="0px";    l-=n.offsetWidth;        var r=n.offsetWidth;    t.borderRightWidth="0px";    r-=n.offsetWidth;        var o=n.offsetHeight;    t.borderTopWidth="0px";    o-=n.offsetHeight;        var b=n.offsetHeight;    t.borderBottomWidth="0px";    b-=n.offsetHeight;        t.borderLeftWidth=l+"px";    t.borderTopWidth=o+"px";    t.borderRightWidth=r+"px";    t.borderBottomWidth=b+"px";        var s={l:l,r:r,t:o,b:b,x:l,y:o};            return s;   } else {    var s= {      x: this.parseInt(n.style.borderLeftWidth),      y: this.parseInt(n.style.borderTopWidth),      r: this.parseInt(n.style.borderRightWidth),      b: this.parseInt(n.style.borderBottomWidth)     };    s.l=s.x;    s.t=s.y;    return s;   }  } },    getSize : function (n,withMargin){  var c={   x : n.offsetWidth != null ? n.offsetWidth : 0,   y : n.offsetHeight != null ? n.offsetHeight : 0  };    //c.x=this.parseInt(c.x);  //c.y=this.parseInt(c.y);    //tr("get size for : "+n.id);  //tra(c);  if (withMargin) {   var m=this.getMargin(n);   c.x+=m.l+m.r;   c.y+=m.t+m.b;  }  //tra(m);  //tr("get size for : "+n.id);  //tra(c);  return c;  },  setSize : function(elmt,x,y,withMargin){  //tf("$dom::setSize");  //if (elmt==undefined || elmt.style.display=="none") return;  if ($IE){   if (withMargin){        var m=this.getMargin(elmt);    x-=m.l+m.r;    y-=m.t+m.b;       }      elmt.style.width=x;      elmt.style.height=y;     } else {   var clientSize=this.getClientSize(elmt);   var dx=clientSize.l+clientSize.r;      var dy=clientSize.t+clientSize.b;      elmt.style.width=x-dx+"px";   elmt.style.height=y-dy+"px";  } },  /** * get the context position relative to its parent. */ getPosition : function (elmt,withMargin){  var c;    c={   x:elmt.offsetLeft,   y:elmt.offsetTop  };  //c.x=this.parseInt(c.x);  //c.y=this.parseInt(c.y);  if (withMargin){   var m=this.getMargin(elmt);   c.x-=m.l;   c.y-=m.t;  }    return c; }, setPosition : function (elmt,x,y,withMargin){  //tf("$dom::setPosition");  if (withMargin){   //var m=this.getMargin(elmt);   //x-=m.l;   //y-=m.t;  }   elmt.style.left=x+"px";  elmt.style.top=y+"px"; },    setAlpha : function (n,a){  return;  n.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+a*100+");";  n.style.opacity = a;  n.style.MozOpacity = a; } }var $motion={ smooth : function (s, e, t){  if (t>1) t=1;  return (e - s) * t + s; }}

    // this is a default config object./*var $config={ width    : 300, height    : 200, bottom   : 0, right   : 10, display   : true, contentUrl  : "页面Url", time : {  slideIn   : 10,  hold   : 10,  slideOut  : 10 }}*/

    /*** PopUp class used to pop a message up.* Usage : * var pp = new PopUp(id, popup_config_obj);* pp.create();* ....* pp.show();*/function PopUp(id, config){ this.id=id;  var c = this.config = config; c.width  = $gv(c.width,300); c.height  = $gv(c.height,200); c.bottom  = $gv(c.bottom,0); c.right  = $gv(c.right,20); c.display  = $gv(c.display,true); c.contentUrl= $gv(c.contentUrl,""); c.motionFunc= $gv(c.motionFunc,$motion.smooth); c.position = {x:0,y:0};  var t=c.time; t.slideIn = $gv(t.slideIn,10); t.hold  = $gv(t.hold,10); t.slideOut = $gv(t.slideOut,10);  t.slideIn  *= 1000; t.hold  *= 1000; t.slideOut *= 1000;  this.container = document.body; this.popup = null; this.content = null; this.switchButton = null;  this.moveTargetPosition = 0; this.startMoveTime = null; this.startPosition = null;  this.status = PopUp.STOP; this.intervalHandle = null;  this.mm = "max";  this.imgMin = "最小化按钮图片"; this.imgMax = "还原按钮图片";}

    //static membersPopUp.STOP = 0;PopUp.MOVE_DOWN = 1;PopUp.MOVE_UP = 2;PopUp.SWITCH_TO_MIN = PopUp.MOVE_DOWN | 4;PopUp.SWITCH_TO_MAX = PopUp.MOVE_UP | 8;

    var __o={ create : function (){    var doc=document;  var c=this.config;     //create popup holder & config it.  var p = this.popup = doc.createElement("div");  this.container.appendChild(p);    p.id=this.id;  p.style.cssText="position:absolute;/      z-index:9000;/      overflow:hidden;/      border:0px solid #f00;/      ";  $dom.setSize(p, c.width, c.height);        //create popup content holder & config it.  var t = this.content = doc.createElement("div");  p.appendChild(t);    t.id = this.id+"_content";  t.style.cssText="position:absolute;/      z-index:1;/      overflow:hidden;";  $dom.setSize(t, c.width, c.height);  $dom.setPosition(t,0,0);//add    c.position.y = c.height;//add  this.onresize();//add  //$dom.setPosition(t, 0, c.height);//hide it at first        // create content holder's content.  // a close button & an iframe for loading external content.  t.innerHTML = "<a id='closeButton' href='#'></a>"+         "<a id='switchButton' href='#'></a>"+          "<iframe id='"+this.id+"_content_iframe' src="+c.contentUrl+" frameborder=0 scrolling=no width='100%' height='100%'></iframe>";      var sBtn = this.switchButton = $_t(t,'a',"switchButton");  sBtn.style.cssText='position:absolute;/       z-index:2;/       /       font-size:0px;/       line-height:0px;/       /       left:220px;/       top:6px;/       width:15px;/       height:15px;/       /       background-image:url("最小化按钮图片");';   $addEL(sBtn,"click",$dele(this,"switchMode"),true);  $addEL(sBtn,"click",$cancelEvent,true);      var btn = $_t(t,'a',"closeButton");  btn.style.cssText='position:absolute;/       z-index:2;/       /       font-size:0px;/       line-height:0px;/       /       left:240px;/       top:6px;/       width:15px;/       height:15px;/       /       background-image:url("关闭按钮图片");';        $addEL(btn,"mouseover",function (e){            $dom.setAlpha(this,0.4);           },true);    $addEL(btn,"mouseout",function (e){          $dom.setAlpha(this,1);           },true);                 $addEL(btn,"click",$dele(this,"hide"),true);  $addEL(btn,"click",$cancelEvent,true);    var container=$IE ? document.body : document.documentElement;    $addEL(document.body,"resize",$dele(this,"onresize"),true);     this.__hackTimer=window.setInterval("__popup.onresize()",50);      $addEL(container,"scroll",$dele(this,"onresize"),true);    //initialize position at once.  this.onresize();   },  show : function (){    if (!this.config.display) return;    this.moveTargetPosition = 0;  this.status = PopUp.MOVE_UP;  this.startMove(); },  hide : function (){    this.moveTargetPosition = this.config.height;  this.status = PopUp.MOVE_DOWN;  this.startMove(); },  minimize : function (){  //alert("minimize");  this.mm = "min";  this.moveTargetPosition = this.config.height - 28;  this.status = PopUp.SWITCH_TO_MIN;  this.startMove();    var s = this.switchButton.style;  var bg = s.backgroundImage;    if (bg.indexOf(this.imgMin) > -1) {   bg = bg.replace(this.imgMin,this.imgMax);   s.backgroundImage = bg;     } },  maximize : function (){  //alert("maximize");  if (!this.config.display) return;    this.mm = "max";  this.moveTargetPosition = 0;  this.status = PopUp.SWITCH_TO_MAX;  this.startMove();      var s = this.switchButton.style;  var bg = s.backgroundImage;    if (bg.indexOf(this.imgMax) > -1) {   bg = bg.replace(this.imgMax,this.imgMin);   s.backgroundImage = bg;     } },  delayHide : function (){    window.setTimeout("__popup.hide()",this.config.time.hold); },  delayMin : function (){  window.setTimeout("__popup.minimize()",this.config.time.hold); },  switchMode : function (){  //alert("switch");  if (this.mm == "min"){   this.maximize();  } else {   this.minimize();  } },  startMove : function (){  this.stopMove();    this.intervalHandle = window.setInterval("__popup.move()",100);    this.startMoveTime = new Date().getTime();  //this.startPosition = $dom.getPosition(this.content).y;//parseInt(this.content.style.top);  this.startPosition = this.config.position.y; },  stopMove : function (){  if (this.intervalHandle != null) window.clearInterval(this.intervalHandle);  this.intervalHandle = null; },   move : function (){      var t = new Date().getTime();  t = t - this.startMoveTime;    var total = this.status & PopUp.MOVE_UP ?      this.config.time.slideIn :      this.config.time.slideOut;    var y = this.config.motionFunc(this.startPosition, this.moveTargetPosition, t/total);  //this.content.style.top = y + "px";  this.config.position.y = y;  this.onresize();      if (t >= total){   this.onFinishMove();  } },  onFinishMove : function (){  this.stopMove();  //this.content.style.top = this.moveTargetPosition + "px";    if (this.status == PopUp.MOVE_UP && this.config.time.hold > 0 ){   this.delayMin();  } else {   if (this.__hackTimer!=null) window.clearInterval(this.__hackTimer);  }  this.status = PopUp.STOP; },  onresize : function (){  var c=this.config;  //var t=document.documentElement;  var t=document.body;    var dx=t.clientWidth + t.scrollLeft;  var dy=t.clientHeight + t.scrollTop;    var x = dx - c.right - c.width ;  var y = dy - c.bottom - c.height + c.position.y;      $dom.setPosition(this.popup, x, y);   $dom.setSize(this.popup, c.width, c.height-c.position.y); }}

    $cpAttr(PopUp.prototype,__o);

    /*---------------------------------------*/

    function readCookie(name){  var cookieValue = "";  var search = name + "=";  if(document.cookie.length > 0)  {     offset = document.cookie.indexOf(search);    if (offset != -1)    {       offset += search.length;      end = document.cookie.indexOf(";", offset);      if (end == -1) end = document.cookie.length;      cookieValue = unescape(document.cookie.substring(offset, end))    }  }  return cookieValue;}

    function writeCookie(name, value, hours){  var expire = "";  if(hours != null)  {    expire = new Date((new Date()).getTime() + hours * 3600000);    expire = "; expires=" + expire.toGMTString();  }  document.cookie = name + "=" + escape(value) + expire + ";path=/";}

    /*** main function to config the pop-up window & run it.* web deployer change codes here to manipulte popups performance.* & should not change codes out of this function.*/function job(){

     /** * config object */ var cfg={  //width & height of the popup window ,these values should be determined debpended on inner contents.  width    : 260,  height    : 190,    //distance to the bottom & the right edge.  bottom   : 2,  right   : 1,    //switch of displaying the popup  display   : true,     //content url  contentUrl  : "页面Url",    //time configuration,in seconds  time : {   slideIn   : 1,   hold    : 60,   slideOut  : 1  }      }  //at what time the popup should display,in hours : 0~23, //the number after add symbol means after how many the hours to display popup for the next time.  var displayTimeList = ["7+7"];  // the popup displays each time thie page reload or only once at the first time page loaded. // once / eachTime var displayMode = "once"; //var displayMode = "eachTime";  //cookie name storing the next time to display popup var cookieName="sina_blog_popup_next_display_time";    /** * --------------------- from here below, the codes should NOT be modified. */ var hours={}; var delays=[]; for (var i=0;i<displayTimeList.length;i++) {  var o = displayTimeList[i];  var ar = o.split("+");  var t = parseInt(ar[0]);  for (var m=0;m<ar.length-1;m++){      ar[m]=ar[m+1];  }    hours[t]=true;  for (var j=0;j<ar.length;j++){   hours[t + parseInt(ar[j])]=true;  }   } displayTimeList=[]; for (var i in hours){  var s = parseInt(i);  if (isNaN(s)) continue;  displayTimeList[displayTimeList.length]=s; } displayTimeList = displayTimeList.sort(); //alert(displayTimeList);   var pp = new PopUp("xp", cfg); window.__popup=pp; pp.create();    //display:  var n=readCookie(cookieName);   if (displayMode=="eachTime")   pp.show(); else {  var tm=new Date().getTime();  if (n==null || tm>n) {   pp.show();      //get next display time   var hr=new Date().getHours();   var f = 60*60*1000;   var l = displayTimeList.concat(), len = l.length;   for (var i = 0; i < len; i++) l[len + i] = l[i] + 24;   for (var i = 0; i < l.length && hr >= l[i]; i++);      var dt = new Date();   dt.setHours(l[i] > 23 ? l[i] - 24 : l[i]);   var nextTime = dt.getTime();   if (l[i] > 23) nextTime += f * 24 ;      writeCookie(cookieName, nextTime, 24);  } }}

    function doit(){ if (document.body == null) {    window.setTimeout(doit,500);  return; }  job();}

    //var dbg=document.getElementById("dbg");

    //window.alert=function (m){ //dbg.value+=m+"/n";//}

    doit();

     

    最新回复(0)