超酷鼠标提示信息

 
  1.     最近主站首页要添加一个js提示框,找了好久终于找到了一个非常帮的js提示框;   
  2.   
  3.      实现起来非常简单,而且效果很棒,现在提供给大家,希望对大家有帮助。   
  4.   
  5.      boxOver.js文件内容为:   
  6.   
  7.         
  8.   
  9. /* --- BoxOver ---  
  10. /* --- v 2.1 17th June 2006  
  11. By Oliver Bryant with help of Matthew Tagg  
  12. http://boxover.swazz.org */  
  13.   
  14.   
  15.   
  16. if (typeof document.attachEvent!='undefined') {   
  17.   
  18.    window.attachEvent('onload',init);   
  19.   
  20.    document.attachEvent('onmousemove',moveMouse);   
  21.   
  22.    document.attachEvent('onclick',checkMove); }   
  23.   
  24. else {   
  25.   
  26.    window.addEventListener('load',init,false);   
  27.   
  28.    document.addEventListener('mousemove',moveMouse,false);   
  29.   
  30.    document.addEventListener('click',checkMove,false);   
  31.   
  32. }   
  33.   
  34.   
  35.   
  36. var oDv=document.createElement("div");   
  37.   
  38. var dvHdr=document.createElement("div");   
  39.   
  40. var dvBdy=document.createElement("div");   
  41.   
  42. var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft;   
  43.   
  44. boxOpen=false;   
  45.   
  46. ox=10;   
  47.   
  48. oy=10;   
  49.   
  50. lockX=0;   
  51.   
  52. lockY=0;   
  53.   
  54.   
  55.   
  56. function init() {   
  57.   
  58.  oDv.appendChild(dvHdr);   
  59.   
  60.  oDv.appendChild(dvBdy);   
  61.   
  62.  oDv.style.position="absolute";   
  63.   
  64.  oDv.style.visibility='hidden';   
  65.   
  66.  document.body.appendChild(oDv);    
  67.   
  68. }   
  69.   
  70.   
  71.   
  72. function defHdrStyle() {   
  73.   
  74.  dvHdr.innerHTML='<img  style="vertical-align:middle"  src="info.gif">  '+dvHdr.innerHTML;   
  75.   
  76.  dvHdr.style.fontWeight='bold';   
  77.   
  78.  dvHdr.style.width='150px';   
  79.   
  80.  dvHdr.style.fontFamily='arial';   
  81.   
  82.  dvHdr.style.border='1px solid #A5CFE9';   
  83.   
  84.  dvHdr.style.padding='3';   
  85.   
  86.  dvHdr.style.fontSize='11';   
  87.   
  88.  dvHdr.style.color='#4B7A98';   
  89.   
  90.  dvHdr.style.background='#D5EBF9';   
  91.   
  92.  dvHdr.style.filter='alpha(opacity=85)'// IE   
  93.   
  94.  dvHdr.style.opacity='0.85'// FF   
  95.   
  96. }   
  97.   
  98.   
  99.   
  100. function defBdyStyle() {   
  101.   
  102.  dvBdy.style.borderBottom='1px solid #A5CFE9';   
  103.   
  104.  dvBdy.style.borderLeft='1px solid #A5CFE9';   
  105.   
  106.  dvBdy.style.borderRight='1px solid #A5CFE9';   
  107.   
  108.  dvBdy.style.width='150px';   
  109.   
  110.  dvBdy.style.fontFamily='arial';   
  111.   
  112.  dvBdy.style.fontSize='11';   
  113.   
  114.  dvBdy.style.padding='3';   
  115.   
  116.  dvBdy.style.color='#1B4966';   
  117.   
  118.  dvBdy.style.background='#FFFFFF';   
  119.   
  120.  dvBdy.style.filter='alpha(opacity=85)'// IE   
  121.   
  122.  dvBdy.style.opacity='0.85'// FF   
  123.   
  124. }   
  125.   
  126.   
  127.   
  128. function checkElemBO(txt) {   
  129.   
  130. if (!txt || typeof(txt) != 'string'return false;   
  131.   
  132. if ((txt.indexOf('header')>-1)&&(txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1))    
  133.   
  134.    return true;   
  135.   
  136. else  
  137.   
  138.    return false;   
  139.   
  140. }   
  141.   
  142.   
  143.   
  144. function scanBO(curNode) {   
  145.   
  146.    if (checkElemBO(curNode.title)) {   
  147.   
  148.          curNode.boHDR=getParam('header',curNode.title);   
  149.   
  150.          curNode.boBDY=getParam('body',curNode.title);   
  151.   
  152.    curNode.boCSSBDY=getParam('cssbody',curNode.title);      
  153.   
  154.    curNode.boCSSHDR=getParam('cssheader',curNode.title);   
  155.   
  156.    curNode.IEbugfix=(getParam('hideselects',curNode.title)=='on')?true:false;   
  157.   
  158.    curNode.fixX=parseInt(getParam('fixedrelx',curNode.title));   
  159.   
  160.    curNode.fixY=parseInt(getParam('fixedrely',curNode.title));   
  161.   
  162.    curNode.absX=parseInt(getParam('fixedabsx',curNode.title));   
  163.   
  164.    curNode.absY=parseInt(getParam('fixedabsy',curNode.title));   
  165.   
  166.    curNode.offY=(getParam('offsety',curNode.title)!='')?parseInt(getParam('offsety',curNode.title)):10;   
  167.   
  168.    curNode.offX=(getParam('offsetx',curNode.title)!='')?parseInt(getParam('offsetx',curNode.title)):10;   
  169.   
  170.    curNode.fade=(getParam('fade',curNode.title)=='on')?true:false;   
  171.   
  172.    curNode.fadespeed=(getParam('fadespeed',curNode.title)!='')?getParam('fadespeed',curNode.title):0.04;   
  173.   
  174.    curNode.delay=(getParam('delay',curNode.title)!='')?parseInt(getParam('delay',curNode.title)):0;   
  175.   
  176.    if (getParam('requireclick',curNode.title)=='on') {   
  177.   
  178.     curNode.requireclick=true;   
  179.   
  180.     document.all?curNode.attachEvent('onclick',showHideBox):curNode.addEventListener('click',showHideBox,false);   
  181.   
  182.     document.all?curNode.attachEvent('onmouseover',hideBox):curNode.addEventListener('mouseover',hideBox,false);   
  183.   
  184.    }   
  185.   
  186.    else {// Note : if requireclick is on the stop clicks are ignored         
  187.   
  188.       if (getParam('doubleclickstop',curNode.title)!='off') {   
  189.   
  190.        document.all?curNode.attachEvent('ondblclick',pauseBox):curNode.addEventListener('dblclick',pauseBox,false);   
  191.   
  192.       }    
  193.   
  194.       if (getParam('singleclickstop',curNode.title)=='on') {   
  195.   
  196.        document.all?curNode.attachEvent('onclick',pauseBox):curNode.addEventListener('click',pauseBox,false);   
  197.   
  198.       }   
  199.   
  200.      }   
  201.   
  202.    curNode.windowLock=getParam('windowlock',curNode.title).toLowerCase()=='off'?false:true;   
  203.   
  204.    curNode.title='';   
  205.   
  206.    curNode.hasbox=1;   
  207.   
  208.     }   
  209.   
  210.     else  
  211.   
  212.        curNode.hasbox=2;      
  213.   
  214. }   
  215.   
  216.   
  217.   
  218.   
  219.   
  220. function getParam(param,list) {   
  221.   
  222.  var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')//s*=//s*//[//s*(((//[//[)|(//]//])|([^//]//[]))*)//s*//]');   
  223.   
  224.  var res = reg.exec(list);   
  225.   
  226.  var returnvar;   
  227.   
  228.  if(res)   
  229.   
  230.   return res[2].replace('[[','[').replace(']]',']');   
  231.   
  232.  else  
  233.   
  234.   return '';   
  235.   
  236. }   
  237.   
  238.   
  239.   
  240. function Left(elem){    
  241.   
  242.  var x=0;   
  243.   
  244.  if (elem.calcLeft)   
  245.   
  246.   return elem.calcLeft;   
  247.   
  248.  var oElem=elem;   
  249.   
  250.  while(elem){   
  251.   
  252.    if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0))   
  253.   
  254.     x+=parseInt(elem.currentStyle.borderLeftWidth);   
  255.   
  256.    x+=elem.offsetLeft;   
  257.   
  258.    elem=elem.offsetParent;   
  259.   
  260.    }    
  261.   
  262.  oElem.calcLeft=x;   
  263.   
  264.  return x;   
  265.   
  266.  }   
  267.   
  268.   
  269.   
  270. function Top(elem){   
  271.   
  272.   var x=0;   
  273.   
  274.   if (elem.calcTop)   
  275.   
  276.    return elem.calcTop;   
  277.   
  278.   var oElem=elem;   
  279.   
  280.   while(elem){     
  281.   
  282.     if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0))   
  283.   
  284.     x+=parseInt(elem.currentStyle.borderTopWidth);    
  285.   
  286.    x+=elem.offsetTop;   
  287.   
  288.           elem=elem.offsetParent;   
  289.   
  290.    }    
  291.   
  292.    oElem.calcTop=x;   
  293.   
  294.    return x;   
  295.   
  296.       
  297.   
  298. }   
  299.   
  300.   
  301.   
  302. var ah,ab;   
  303.   
  304. function applyStyles() {   
  305.   
  306.  if(ab)   
  307.   
  308.   oDv.removeChild(dvBdy);   
  309.   
  310.  if (ah)   
  311.   
  312.   oDv.removeChild(dvHdr);   
  313.   
  314.  dvHdr=document.createElement("div");   
  315.   
  316.  dvBdy=document.createElement("div");   
  317.   
  318.  CBE.boCSSBDY?dvBdy.className=CBE.boCSSBDY:defBdyStyle();   
  319.   
  320.  CBE.boCSSHDR?dvHdr.className=CBE.boCSSHDR:defHdrStyle();   
  321.   
  322.  dvHdr.innerHTML=CBE.boHDR;   
  323.   
  324.  dvBdy.innerHTML=CBE.boBDY;   
  325.   
  326.  ah=false;   
  327.   
  328.  ab=false;   
  329.   
  330.  if (CBE.boHDR!='') {     
  331.   
  332.   oDv.appendChild(dvHdr);   
  333.   
  334.   ah=true;   
  335.   
  336.  }    
  337.   
  338.  if (CBE.boBDY!=''){   
  339.   
  340.   oDv.appendChild(dvBdy);   
  341.   
  342.   ab=true;   
  343.   
  344.  }    
  345.   
  346. }   
  347.   
  348.   
  349.   
  350. var CSE,iterElem,LSE,CBE,LBE, totalScrollLeft, totalScrollTop, width, height ;   
  351.   
  352. var ini=false;   
  353.   
  354.   
  355.   
  356. // Customised function for inner window dimension   
  357.   
  358. function SHW() {   
  359.   
  360.    if (document.body && (document.body.clientWidth !=0)) {   
  361.   
  362.       width=document.body.clientWidth;   
  363.   
  364.       height=document.body.clientHeight;   
  365.   
  366.    }   
  367.   
  368.    if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) {   
  369.   
  370.       width=document.documentElement.clientWidth;      
  371.   
  372.       height=document.documentElement.clientHeight;      
  373.   
  374.    }      
  375.   
  376.    return [width,height];   
  377.   
  378. }   
  379.   
  380.   
  381.   
  382.   
  383.   
  384. var ID=null;   
  385.   
  386. function moveMouse(e) {   
  387.   
  388.    //boxMove=true;   
  389.   
  390.  e?evt=e:evt=event;   
  391.   
  392.     
  393.   
  394.  CSE=evt.target?evt.target:evt.srcElement;   
  395.   
  396.     
  397.   
  398.  if (!CSE.hasbox) {   
  399.   
  400.     // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement   
  401.   
  402.     iElem=CSE;   
  403.   
  404.     while ((iElem.parentNode) && (!iElem.hasbox)) {   
  405.   
  406.        scanBO(iElem);   
  407.   
  408.        iElem=iElem.parentNode;   
  409.   
  410.     }       
  411.   
  412.  }   
  413.   
  414.     
  415.   
  416.  if ((CSE!=LSE)&&(!isChild(CSE,dvHdr))&&(!isChild(CSE,dvBdy))){     
  417.   
  418.     if (!CSE.boxItem) {   
  419.   
  420.    iterElem=CSE;   
  421.   
  422.    while ((iterElem.hasbox==2)&&(iterElem.parentNode))   
  423.   
  424.      iterElem=iterElem.parentNode;    
  425.   
  426.    CSE.boxItem=iterElem;   
  427.   
  428.    }   
  429.   
  430.   iterElem=CSE.boxItem;   
  431.   
  432.   if (CSE.boxItem&&(CSE.boxItem.hasbox==1))  {   
  433.   
  434.    LBE=CBE;   
  435.   
  436.    CBE=iterElem;   
  437.   
  438.    if (CBE!=LBE) {   
  439.   
  440.     applyStyles();   
  441.   
  442.     if (!CBE.requireclick)   
  443.   
  444.      if (CBE.fade) {   
  445.   
  446.       if (ID!=null)   
  447.   
  448.        clearTimeout(ID);   
  449.   
  450.       ID=setTimeout("fadeIn("+CBE.fadespeed+")",CBE.delay);   
  451.   
  452.      }   
  453.   
  454.      else {   
  455.   
  456.       if (ID!=null)   
  457.   
  458.        clearTimeout(ID);   
  459.   
  460.       COL=1;   
  461.   
  462.       ID=setTimeout("oDv.style.visibility='visible';ID=null;",CBE.delay);         
  463.   
  464.      }   
  465.   
  466.     if (CBE.IEbugfix) {hideSelects();}    
  467.   
  468.     fixposx=!isNaN(CBE.fixX)?Left(CBE)+CBE.fixX:CBE.absX;   
  469.   
  470.     fixposy=!isNaN(CBE.fixY)?Top(CBE)+CBE.fixY:CBE.absY;      
  471.   
  472.     lockX=0;   
  473.   
  474.     lockY=0;   
  475.   
  476.     boxMove=true;   
  477.   
  478.     ox=CBE.offX?CBE.offX:10;   
  479.   
  480.     oy=CBE.offY?CBE.offY:10;   
  481.   
  482.    }   
  483.   
  484.   }   
  485.   
  486.   else if (!isChild(CSE,dvHdr) && !isChild(CSE,dvBdy) && (boxMove)) {   
  487.   
  488.    // The conditional here fixes flickering between tables cells.   
  489.   
  490.    if ((!isChild(CBE,CSE)) || (CSE.tagName!='TABLE')) {         
  491.   
  492.       CBE=null;   
  493.   
  494.       if (ID!=null)   
  495.   
  496.        clearTimeout(ID);   
  497.   
  498.       fadeOut();   
  499.   
  500.       showSelects();   
  501.   
  502.    }   
  503.   
  504.   }   
  505.   
  506.   LSE=CSE;   
  507.   
  508.  }   
  509.   
  510.  else if (((isChild(CSE,dvHdr) || isChild(CSE,dvBdy))&&(boxMove))) {   
  511.   
  512.   totalScrollLeft=0;   
  513.   
  514.   totalScrollTop=0;   
  515.   
  516.      
  517.   
  518.   iterElem=CSE;   
  519.   
  520.   while(iterElem) {   
  521.   
  522.    if(!isNaN(parseInt(iterElem.scrollTop)))   
  523.   
  524.     totalScrollTop+=parseInt(iterElem.scrollTop);   
  525.   
  526.    if(!isNaN(parseInt(iterElem.scrollLeft)))   
  527.   
  528.     totalScrollLeft+=parseInt(iterElem.scrollLeft);   
  529.   
  530.    iterElem=iterElem.parentNode;      
  531.   
  532.   }   
  533.   
  534.   if (CBE!=null) {   
  535.   
  536.    boxLeft=Left(CBE)-totalScrollLeft;   
  537.   
  538.    boxRight=parseInt(Left(CBE)+CBE.offsetWidth)-totalScrollLeft;   
  539.   
  540.    boxTop=Top(CBE)-totalScrollTop;   
  541.   
  542.    boxBottom=parseInt(Top(CBE)+CBE.offsetHeight)-totalScrollTop;   
  543.   
  544.    doCheck();   
  545.   
  546.   }   
  547.   
  548.  }   
  549.   
  550.     
  551.   
  552.  if (boxMove&&CBE) {   
  553.   
  554.   // This added to alleviate bug in IE6 w.r.t DOCTYPE   
  555.   
  556.   bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;   
  557.   
  558.   bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;   
  559.   
  560.   mouseX=evt.pageX?evt.pageX-bodyScrollLet:evt.clientX-document.body.clientLeft;   
  561.   
  562.   mouseY=evt.pageY?evt.pageY-bodyScrollTop:evt.clientY-document.body.clientTop;   
  563.   
  564.   if ((CBE)&&(CBE.windowLock)) {   
  565.   
  566.    mouseY < -oy?lockY=-mouseY-oy:lockY=0;   
  567.   
  568.    mouseX < -ox?lockX=-mouseX-ox:lockX=0;   
  569.   
  570.    mouseY > (SHW()[1]-oDv.offsetHeight-oy)?lockY=-mouseY+SHW()[1]-oDv.offsetHeight-oy:lockY=lockY;   
  571.   
  572.    mouseX > (SHW()[0]-dvBdy.offsetWidth-ox)?lockX=-mouseX-ox+SHW()[0]-dvBdy.offsetWidth:lockX=lockX;      
  573.   
  574.   }   
  575.   
  576.   oDv.style.left=((fixposx)||(fixposx==0))?fixposx:bodyScrollLet+mouseX+ox+lockX+"px";   
  577.   
  578.   oDv.style.top=((fixposy)||(fixposy==0))?fixposy:bodyScrollTop+mouseY+oy+lockY+"px";     
  579.   
  580.      
  581.   
  582.  }   
  583.   
  584. }   
  585.   
  586.   
  587.   
  588. function doCheck() {    
  589.   
  590.  if (   (mouseX < boxLeft)    ||     (mouseX >boxRight)     || (mouseY < boxTop) || (mouseY > boxBottom)) {   
  591.   
  592.   if (!CBE.requireclick)   
  593.   
  594.    fadeOut();   
  595.   
  596.   if (CBE.IEbugfix) {showSelects();}   
  597.   
  598.   CBE=null;   
  599.   
  600.  }   
  601.   
  602. }   
  603.   
  604.   
  605.   
  606. function pauseBox(e) {   
  607.   
  608.    e?evt=e:evt=event;   
  609.   
  610.  boxMove=false;   
  611.   
  612.  evt.cancelBubble=true;   
  613.   
  614. }   
  615.   
  616.   
  617.   
  618. function showHideBox(e) {   
  619.   
  620.  oDv.style.visibility=(oDv.style.visibility!='visible')?'visible':'hidden';   
  621.   
  622. }   
  623.   
  624.   
  625.   
  626. function hideBox(e) {   
  627.   
  628.  oDv.style.visibility='hidden';   
  629.   
  630. }   
  631.   
  632.   
  633.   
  634. var COL=0;   
  635.   
  636. var stopfade=false;   
  637.   
  638. function fadeIn(fs) {   
  639.   
  640.   ID=null;   
  641.   
  642.   COL=0;   
  643.   
  644.   oDv.style.visibility='visible';   
  645.   
  646.   fadeIn2(fs);   
  647.   
  648. }   
  649.   
  650.   
  651.   
  652. function fadeIn2(fs) {   
  653.   
  654.   COL=COL+fs;   
  655.   
  656.   COL=(COL>1)?1:COL;   
  657.   
  658.   oDv.style.filter='alpha(opacity='+parseInt(100*COL)+')';   
  659.   
  660.   oDv.style.opacity=COL;   
  661.   
  662.   if (COL<1)   
  663.   
  664.    setTimeout("fadeIn2("+fs+")",20);     
  665.   
  666. }   
  667.   
  668.   
  669.   
  670.   
  671.   
  672. function fadeOut() {   
  673.   
  674.  oDv.style.visibility='hidden';   
  675.   
  676.     
  677.   
  678. }   
  679.   
  680.   
  681.   
  682. function isChild(s,d) {   
  683.   
  684.  while(s) {   
  685.   
  686.   if (s==d)    
  687.   
  688.    return true;   
  689.   
  690.   s=s.parentNode;   
  691.   
  692.  }   
  693.   
  694.  return false;   
  695.   
  696. }   
  697.   
  698.   
  699.   
  700. var cSrc;   
  701.   
  702. function checkMove(e) {   
  703.   
  704.  e?evt=e:evt=event;   
  705.   
  706.  cSrc=evt.target?evt.target:evt.srcElement;   
  707.   
  708.  if ((!boxMove)&&(!isChild(cSrc,oDv))) {   
  709.   
  710.   fadeOut();   
  711.   
  712.   if (CBE&&CBE.IEbugfix) {showSelects();}   
  713.   
  714.   boxMove=true;   
  715.   
  716.   CBE=null;   
  717.   
  718.  }   
  719.   
  720. }   
  721.   
  722.   
  723.   
  724. function showSelects(){   
  725.   
  726.    var elements = document.getElementsByTagName("select");   
  727.   
  728.    for (i=0;i< elements.length;i++){   
  729.   
  730.       elements[i].style.visibility='visible';   
  731.   
  732.    }   
  733.   
  734. }   
  735.   
  736.   
  737.   
  738. function hideSelects(){   
  739.   
  740.    var elements = document.getElementsByTagName("select");   
  741.   
  742.    for (i=0;i< elements.length;i++){   
  743.   
  744.    elements[i].style.visibility='hidden';   
  745.   
  746.    }   
  747.   
  748. }   
  749.   
  750. 使用:   
  751.   
  752. 在html页面里引用这个文件   
  753.   
  754. <script src='boxover文件路径'></script>   
  755.   
  756. <p title="header=[温馨提示] body=[按住鼠标拖拖看<br>DIY你的主页]">拖动我试试</p>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值