MozTW 討論區 https://forum.moztw.org/ |
|
緊急的js問題 https://forum.moztw.org/viewtopic.php?f=13&t=12494 |
第 1 頁 (共 1 頁) |
發表人: | tszkin [ 2006-01-19, 21:49 ] |
文章主題 : | 緊急的js問題 |
我寫了一個js,但在firefox是沒有效的,我的是在mouse滑過時,顯示了下拉式選單.... 代碼: <!--
var menuOffX=0 //菜單距連接文字最左端距離 var menuOffY=18 //菜單距連接文字頂端距離 var fo_shadows=new Array() var linkset=new Array() var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1 var ns6=document.getElementById&&!document.all var ns4=document.layers function openScript(url, width, height){ var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=no' ); } function showmenu(e,vmenu,mod){ if (!document.all&&!document.getElementById&&!document.layers) return which=vmenu clearhidemenu() ie_clearshadow() menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : "" menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj if (ie4||ns6) menuobj.innerHTML=which else{ menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>') menuobj.document.close() } menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height eventX=ie4? event.clientX : ns6? e.clientX : e.x eventY=ie4? event.clientY : ns6? e.clientY : e.y var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY if (rightedge<menuobj.contentwidth) menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth else menuobj.thestyle.left=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX if (bottomedge<menuobj.contentheight&&mod!=0) menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY else menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY menuobj.thestyle.visibility="visible" ie_dropshadow(menuobj,"#999999",3) return false } function ie_y(e){ var t=e.offsetTop; while(e=e.offsetParent){ t+=e.offsetTop; } return t; } function ie_x(e){ var l=e.offsetLeft; while(e=e.offsetParent){ l+=e.offsetLeft; } return l; } function ie_dropshadow(el, color, size) { var i; for (i=size; i>0; i--) { var rect = document.createElement('div'); var rs = rect.style rs.position = 'absolute'; rs.left = (el.style.posLeft + i) + 'px'; rs.top = (el.style.posTop + i) + 'px'; rs.width = el.offsetWidth + 'px'; rs.height = el.offsetHeight + 'px'; rs.zIndex = el.style.zIndex - i; rs.backgroundColor = color; var opacity = 1 - i / (i + 1); rs.filter = 'alpha(opacity=' + (100 * opacity) + ')'; //el.insertAdjacentElement('afterEnd', rect); fo_shadows[fo_shadows.length] = rect; } } function ie_clearshadow() { for(var i=0;i<fo_shadows.length;i++) { if (fo_shadows[i]) fo_shadows[i].style.display="none" } fo_shadows=new Array(); } function contains_ns6(a, b) { while (b.parentNode) if ((b = b.parentNode) == a) return true; return false; } function hidemenu(){ if (window.menuobj) menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide" ie_clearshadow() } function dynamichide(e){ if (ie4&&!menuobj.contains(e.toElement)) hidemenu() else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget)) hidemenu() } function delayhidemenu(){ if (ie4||ns6||ns4) delayhide=setTimeout("hidemenu()",500) } function clearhidemenu(){ if (window.delayhide) clearTimeout(delayhide) } function highlightmenu(e,state){ if (document.all) source_el=event.srcElement else if (document.getElementById) source_el=e.target if (source_el.className=="menuitems"){ source_el.id=(state=="on")? "mouseoverstyle" : "" } else{ while(source_el.id!="popmenu"){ source_el=document.getElementById? source_el.parentNode : source_el.parentElement if (source_el.className=="menuitems"){ source_el.id=(state=="on")? "mouseoverstyle" : "" } } } } //--> 勞煩了各位 |
發表人: | kourge [ 2006-01-20, 04:02 ] |
文章主題 : | |
Look near the end of the function showmenu 代碼: menuobj.thestyle.visibility="visible" maybe this would work... 代碼: menuobj.thestyle.visibility="visible";
menuobj.thestyle.display="block"; What a messy js code... |
發表人: | tszkin [ 2006-01-20, 10:12 ] |
文章主題 : | |
kourge 寫: Look near the end of the function showmenu
代碼: menuobj.thestyle.visibility="visible" maybe this would work... 代碼: menuobj.thestyle.visibility="visible"; menuobj.thestyle.display="block"; What a messy js code... 小弟入世未深啊 ![]() |
發表人: | kourge [ 2006-01-20, 16:24 ] |
文章主題 : | |
嗯,我在想...Eric Meyer 的純 CSS 選單應該會比較好^^; |
發表人: | tszkin [ 2006-01-20, 21:21 ] |
文章主題 : | |
kourge 寫: 嗯,我在想...Eric Meyer 的純 CSS 選單應該會比較好^^; 可以介紹一下嗎^^ ![]() |
發表人: | josesun [ 2006-01-21, 00:16 ] |
文章主題 : | |
kourge 寫: 嗯,我在想...Eric Meyer 的純 CSS 選單應該會比較好^^;
這個除了掛 IE7 ,不然 IE 不支援吧...= =" |
發表人: | kourge [ 2006-01-21, 03:28 ] |
文章主題 : | |
josesun 寫: kourge 寫: 嗯,我在想...Eric Meyer 的純 CSS 選單應該會比較好^^; 這個除了掛 IE7 ,不然 IE 不支援吧...= =" You can use csshover.htc to fix that. |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |