GVshowMenu.js
上传用户:u_thks
上传日期:2022-07-31
资源大小:1910k
文件大小:8k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

Java

  1. //Pop-it menu- By Dynamic Drive - Modified by Wbird
  2. //For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
  3. //This credit MUST stay intact for use
  4. var GVOffX=0 //菜单距连接文字最左端距离
  5. var GVOffY=18 //菜单距连接文字顶端距离
  6. var vBobjects = new Array();
  7. var fo_shadows=new Array()
  8. var linkset=new Array()
  9. ////No need to edit beyond here
  10. var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
  11. var ns6=document.getElementById&&!document.all
  12. var ns4=document.layers
  13. var xslDoc;
  14. function MM_findObj(n, d) {
  15. var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
  16. d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  17.  
  18. if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  19.   
  20. for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  21.   
  22. if(!x && d.getElementById) x=d.getElementById(n); return x;
  23. function fetch_object(idname, forcefetch)
  24. {
  25. if (typeof(vBobjects[idname]) == "undefined")
  26. {
  27. vBobjects[idname] = MM_findObj(idname);
  28. }
  29. return vBobjects[idname];
  30. }
  31. //showmenu vmenu:内容,允许为空,vmenuobj DIV数据ID,MOD 0=关闭浏览器自适应,用于版面导航菜单
  32. function showmenu(e,vmenu,vmenuobj,mod){
  33. if (!document.all&&!document.getElementById&&!document.layers)
  34. return
  35. var which=vmenu;
  36. if (vmenuobj)
  37. {
  38. var MenuObj = fetch_object(vmenuobj);
  39. if (MenuObj)
  40. {
  41. which = MenuObj.innerHTML;
  42. }
  43. }
  44. if (!which)
  45. {
  46. return
  47. }
  48. clearhidemenu();
  49. ie_clearshadow();
  50. menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
  51. menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
  52. if (ie4||ns6)
  53. menuobj.innerHTML=which
  54. else{
  55. menuobj.document.write('<layer name=gui bgcolor="#E6E6E6" width="165" onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
  56. menuobj.document.close()
  57. }
  58. menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
  59. menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height
  60. eventX=ie4? event.clientX : ns6? e.clientX : e.x
  61. eventY=ie4? event.clientY : ns6? e.clientY : e.y
  62. var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
  63. var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
  64. var getlength
  65. if (rightedge<menuobj.contentwidth){
  66. getlength=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+GVOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
  67. }else{
  68. getlength=ie4? ie_x(event.srcElement)+GVOffX : ns6? window.pageXOffset+eventX : eventX
  69. }
  70. menuobj.thestyle.left=getlength+'px'
  71. if (bottomedge<menuobj.contentheight&&mod!=0){
  72. getlength=ie4? document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+GVOffY-23 : ns6? window.pageYOffset+eventY-menuobj.contentheight-10 : eventY-menuobj.contentheight
  73. } else{
  74. getlength=ie4? ie_y(event.srcElement)+GVOffY : ns6? window.pageYOffset+eventY+10 : eventY
  75. }
  76. menuobj.thestyle.top=getlength+'px'
  77. menuobj.thestyle.visibility="visible"
  78. ie_dropshadow(menuobj,"#999999",3)
  79. return false
  80. }
  81. function ie_y(e){  
  82. var t=e.offsetTop;  
  83. while(e=e.offsetParent){  
  84. t+=e.offsetTop;  
  85. }  
  86. return t;  
  87. }  
  88. function ie_x(e){  
  89. var l=e.offsetLeft;  
  90. while(e=e.offsetParent){  
  91. l+=e.offsetLeft;  
  92. }  
  93. return l;  
  94. }  
  95. function ie_dropshadow(el, color, size)
  96. {
  97. var i;
  98. for (i=size; i>0; i--)
  99. {
  100. var rect = document.createElement('div');
  101. var rs = rect.style
  102. rs.position = 'absolute';
  103. rs.left = (el.style.posLeft + i) + 'px';
  104. rs.top = (el.style.posTop + i) + 'px';
  105. rs.width = el.offsetWidth + 'px';
  106. rs.height = el.offsetHeight + 'px';
  107. rs.zIndex = el.style.zIndex - i;
  108. rs.backgroundColor = color;
  109. var opacity = 1 - i / (i + 1);
  110. rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
  111. //el.insertAdjacentElement('afterEnd', rect);
  112. fo_shadows[fo_shadows.length] = rect;
  113. }
  114. }
  115. function ie_clearshadow()
  116. {
  117. for(var i=0;i<fo_shadows.length;i++)
  118. {
  119. if (fo_shadows[i])
  120. fo_shadows[i].style.display="none"
  121. }
  122. fo_shadows=new Array();
  123. }
  124. function contains_ns6(a, b) {
  125. while (b.parentNode)
  126. if ((b = b.parentNode) == a)
  127. return true;
  128. return false;
  129. }
  130. function hidemenu(){
  131. if (window.menuobj)
  132. menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
  133. ie_clearshadow()
  134. }
  135. function dynamichide(e){
  136. if (ie4&&!menuobj.contains(e.toElement))
  137. hidemenu()
  138. else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
  139. hidemenu()
  140. }
  141. function delayhidemenu(){
  142. if (ie4||ns6||ns4)
  143. delayhide=setTimeout("hidemenu()",500)
  144. }
  145. function clearhidemenu(){
  146. if (window.delayhide)
  147. clearTimeout(delayhide)
  148. }
  149. function highlightmenu(e,state){
  150. if (document.all)
  151. source_el=event.srcElement
  152. else if (document.getElementById)
  153. source_el=e.target
  154. if (source_el.className=="menuitems"){
  155. source_el.id=(state=="on")? "mouseoverstyle" : ""
  156. }
  157. else{
  158. while(source_el.id!="popmenu"){
  159. source_el=document.getElementById? source_el.parentNode : source_el.parentElement
  160. if (source_el.className=="menuitems"){
  161. source_el.id=(state=="on")? "mouseoverstyle" : ""
  162. }
  163. }
  164. }
  165. }
  166. // ===================================================
  167. function hidelayer() {
  168.   if(window.layerobj) {
  169.     layerobj.thestyle.visibility = (ie4 || ns6) ? "hidden" : "hide";
  170.   }
  171.   ie_clearshadow();
  172. }
  173. function delayhidelayer() {
  174.   if(ie4 || ns6 || ns4) {
  175.     delayhide = setTimeout("hidelayer()", 5000);
  176.   }
  177. }
  178. function clearhidelayer() {
  179.   if(window.delayhide) {
  180.     clearTimeout(delayhide);
  181.   }
  182. }
  183. function showlayer(e, vlayer, mod){
  184.   if(!(ie4 || ns4 || ns6)) {
  185.     return;
  186.   }
  187.   which = encodeHtmlTag(vlayer);
  188.   clearhidelayer();
  189.   ie_clearshadow();
  190.   layerobj = ie4 ? document.all.poplayer : ns6 ? document.getElementById("poplayer") : ns4 ? document.poplayer : "";
  191.   layerobj.thestyle = (ie4 || ns6) ? layerobj.style : layerobj;
  192.   
  193.   if(ie4 || ns6) {
  194.     layerobj.innerHTML = which;
  195.   }
  196.   else {
  197.     layerobj.document.write('<layer name="gui" bgColor="#E6E6E6" width="165" onmouseover="clearhidelayer()" onmouseout="hidelayer()">' + which + '</layer>');
  198.     layerobj.document.close();
  199.   }
  200.   layerobj.contentwidth = (ie4 || ns6) ? layerobj.offsetWidth : layerobj.document.gui.document.width;
  201.   layerobj.contentheight = (ie4 || ns6)? layerobj.offsetHeight : layerobj.document.gui.document.height;
  202.   
  203.   eventX = ie4 ? event.clientX : ns6 ? e.clientX : e.x;
  204.   eventY = ie4 ? event.clientY : ns6 ? e.clientY : e.y;
  205.   
  206.   var rightedge = ie4 ? document.body.clientWidth - eventX : window.innerWidth - eventX;
  207.   var bottomedge = ie4 ? document.body.clientHeight - eventY : window.innerHeight-eventY;
  208.   if(rightedge < layerobj.contentwidth) {
  209.     layerobj.thestyle.left = ie4 ? document.body.scrollLeft + eventX - layerobj.contentwidth + GVOffX : ns6? window.pageXOffset + eventX - layerobj.contentwidth : eventX - layerobj.contentwidth;
  210.   }
  211.   else {
  212.     layerobj.thestyle.left = ie4 ? ie_x(event.srcElement) + GVOffX : ns6 ? window.pageXOffset + eventX : eventX;
  213.   }
  214.   if(bottomedge<layerobj.contentheight&&mod != 0) {
  215.     layerobj.thestyle.top = ie4 ? document.body.scrollTop + eventY - layerobj.contentheight-event.offsetY + GVOffY - 23 : ns6 ? window.pageYOffset + eventY - layerobj.contentheight-10 : eventY-layerobj.contentheight;
  216.   }
  217.   else {
  218.     layerobj.thestyle.top = ie4 ? ie_y(event.srcElement) + GVOffY : ns6 ? window.pageYOffset + eventY + 10 : eventY;
  219.   }
  220.   layerobj.thestyle.visibility = "visible";
  221.   ie_dropshadow(layerobj, "#999999", 3);
  222.   return false;
  223. }
  224. function encodeHtmlTag(text) {
  225. text = text.replace(/&/g, "&amp;") ;
  226. text = text.replace(/&/g, "&amp;") ;
  227. text = text.replace(/"/g, "&quot;") ;
  228. //text = text.replace(/</g, "&lt;") ;
  229. //text = text.replace(/>/g, "&gt;") ;
  230. text = text.replace(/'/g, "&#146;") ;
  231. return text ;
  232. }
  233. document.write("<DIV class="showMenu" id="popmenu" onmouseover="clearhidemenu();" style="Z-INDEX: 100" ");
  234. document.write(" onmouseout="dynamichide(event);"></DIV>");
  235. document.write("<div class="poplayer" id="poplayer" style="Z-INDEX: 100"></div>");