标题:Javascript这段代码是什么意思
只看楼主
jing8765
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-8-26
结帖率:50%
已结贴  问题点数:10 回复次数:6 
Javascript这段代码是什么意思
大家好,我是新来的,我现在有一个WRMPS6改版的网站,想问一下大家这段代码是什么意思,如果可以的话尽量讲得详细点,谢谢大家!

var menuOffX=0    //菜单距连接文字最左端距离
var menuOffY=18    //菜单距连接文字顶端距离
var vBobjects = new Array();
var fo_shadows=new Array()
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers

document.write("<div class=menuskin id=popmenu onmouseover='clearhidemenu()' onmouseout='dynamichide(event)' style='z-index:100;'></div>");

function MM_findObj(n, d) {
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
 
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  
    if(!x && d.getElementById) x=d.getElementById(n); return x;

}
function fetch_object(idname, forcefetch)
{
    if (typeof(vBobjects[idname]) == "undefined")
    {
        vBobjects[idname] = MM_findObj(idname);
    }
    return vBobjects[idname];
}
//showmenu vmenu:内容,允许为空,vmenuobj DIV数据ID,MOD 0=关闭浏览器自适应,用于版面导航菜单
function showmenu(e,vmenu,vmenuobj,mod){
    if (!document.all&&!document.getElementById&&!document.layers)
        return
    var which=vmenu;
    if (vmenuobj)
    {
        var MenuObj = fetch_object(vmenuobj);
        if (MenuObj)
        {
            which = MenuObj.innerHTML;
        }
    }
    if (!which)
    {
        return
    }
    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
    var getlength
        if (rightedge<menuobj.contentwidth){
            getlength=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
        }else{
            getlength=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX
        }
        menuobj.thestyle.left=getlength+'px'
        if (bottomedge<menuobj.contentheight&&mod!=0){
            getlength=ie4? document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+menuOffY-23 : ns6? window.pageYOffset+eventY-menuobj.contentheight-10 : eventY-menuobj.contentheight
        }    else{
            getlength=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY
        }
    menuobj.thestyle.top=getlength+'px'
    menuobj.thestyle.visibility="visible"
    ie_dropshadow(menuobj,"#999999",3)
    return false
}

function clearhidemenu(){
    if (window.delayhide)
        clearTimeout(delayhide)
}
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_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 dynamichide(e){
    if (ie4&&!menuobj.contains(e.toElement))
        hidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
        hidemenu()
}
function hidemenu(){
    if (window.menuobj)
        menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
    ie_clearshadow()
}
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) + ')';
        fo_shadows[fo_shadows.length] = rect;
    }
}
function contains_ns6(a, b) {
    while (b.parentNode)
        if ((b = b.parentNode) == a)
            return true;
    return false;
}
搜索更多相关主题的帖子: 代码 Javascript 
2010-08-26 15:13
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
得分:3 
太长了 我懒 等gupiao175来给你解释解释吧
2010-08-27 08:19
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
得分:3 
那些代码我没有全部看懂!只能根据个人浅见,猜测式的解释了!
function MM_findObj(n, d)//获取对象,不同于普通获取,它可以获取框架、表单、元素对象等!
function fetch_object(idname, forcefetch)
由于vBobjects这个我不知道什么意思,但是应该也是取什么对象的,通过idname去取一个对象,如果不存在,就用MM_findObj来获取!
function showmenu(e,vmenu,vmenuobj,mod)//很长,我也没认真看了,意思就是显示菜单特效什么的!
其他函数,我越看越不对头了!
function clearhidemenu(){//清除对象window.delayhide,window.delayhide应该是一个自动执行程序的代码!
function ie_y(e){ function ie_X(e)//获取对象的offsetTop,offsetLeft,至于这2个参数,IE,FF的效果区别太大了,可以自己查资料!
function ie_clearshadow//猜测是隐藏阴影对象组,因为该对象是一个类似树组的东西!
function dynamichide(e)//根据对象促发对象的机智,来执行函数function hidemenu(){
function hidemenu(){//? "hidden" : "hide"这个我不明白到底有何区别!
function ie_dropshadow(el, color, size)//设置阴影效果的STYLE,这个应该是最容易理解的一个函数!并把创建的对象元素放到fo_shadows[fo_shadows.length] 数组里
function contains_ns6(a, b) {//判断有无父亲节点,有就返回true,无就返回false
以上函数功能是我根据个人推理和测猜其功能的,如有错误,也属正常!



Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-08-27 18:00
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
得分:0 
foktime,应该完全知道这些功能,他是给我一个回答的机会!那我就只好献丑了!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-08-27 18:02
jing8765
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-8-26
得分:0 
这段代码是我在WRMPS中看到的,应该是菜单样式设定的意思吧,具体是什么我看不懂,所以想问一下到底是什么意思,不管怎么样,还是谢谢了!
2010-08-28 14:49
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
得分:0 
回复 4楼 gupiao175
我觉得你不做太阳底下最光辉的职业教书育人去太可惜了 又会讲又超有耐心的
2010-08-30 08:08
光影门徒
Rank: 2
等 级:论坛游民
帖 子:103
专家分:28
注 册:2008-4-24
得分:3 
回复 3楼 gupiao175
  兄弟你太有耐心了,佩服!

多看少说,重在学习!
2010-08-30 20:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-316866-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.237796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved