现在想搞个和 windows界面右键属性类似的功能, 就是右键点某个图,然后出现它的属性层。 然后当鼠标点击不在这个属性层的任何地方都关闭这个层。
还有怎么去抓取这个随意的 click事件?

解决方案 »

  1.   

    我弄过一个右键菜单。 不需要判断click事件吧,给DOM元素注册mousedown事件就行
      

  2.   

    最简单的,给div 起个 id
    点击页面时查 event 的 来源, 如果不是 id, 就尝试关闭此id的divjquery: $("#theid").hide();
      

  3.   

    >> 如果不是 id如果不是这个 div
      

  4.   


    <script language='javascript'> 
    /*******以下内容可以修改***************/ 
    var mname=new Array( 
    "首 页", 
    "修 改", 
    "下 载", 
    "删 除", 
    "新 建", 
    "刷 新" 
    ); 
    //mname是菜单对应的名称,数组的个数必须与下面murl对应 var murl=new Array( 
    "window.open('http://www.cn5.cn','_blank','');", 
    "alert('修改');", 
    "alert('download');", 
    "alert('delete');", 
    "alert('new');", 
    "alert('refresh');" 
    ); 
    //murl是菜单对应的操作,可以是任意javascript代码但是要注意不要在里面输入\",只能用' 
    //如果要实现跳转可以这样window.location='url'; 
    var ph=18,mwidth=50;//每条选项的高度,菜单的总宽度 
    var bgc="#eee",txc="black";//菜单没有选中的背景色和文字色 
    var cbgc="darkblue",ctxc="white";//菜单选中的选项背景色和文字色 /****************以下代码请不要修改******************/ 
    var mover="this.style.background='"+cbgc+"';this.style.color='"+ctxc+"';" 
    var mout="this.style.background='"+bgc+"';this.style.color='"+txc+"';" document.oncontextmenu=function() 

    mlay.style.display=""; 
    mlay.style.pixelTop=event.clientY; 
    mlay.style.pixelLeft=event.clientX; 
    return false; 

    function showoff() 

    mlay.style.display="none"; 
    } function fresh() 

    mlay.style.background=bgc; 
    mlay.style.color=txc; 
    mlay.style.width=mwidth; 
    mlay.style.height=mname.length*ph; 
    var h="<table width=100% height="+mname.length*ph+"px cellpadding=0 cellspacing=0 border=0>"; 
    var i=0; 
    for(i=0;i<mname.length;i++) 

    h+="<tr align=center height="+ph+" onclick=\""+murl[i]+"\" onMouseover=\""+mover+"\" onMouseout=\""+mout+"\"><td style='font-size:9pt;'>"+mname[i]+"</td></tr>"; 

    h+="</table>"; 
    mlay.innerHTML=h; 

    </script> 
    <body onClick="showoff();" onload="fresh();"><div id="mlay" style="position:absolute;display:none;cursor:default;" onClick="return false;"></div>
    </body>
      

  5.   

    不用jquery 该怎么判断呢?:)
      

  6.   

    在document的 click事件中判断源对象 是不是你那个图,不是就关了。
      

  7.   

    简单地说是用事件冒泡,分析点击来自哪个元素,
    e=e||window.event;
    var target=e.target||e.srcElement;
    在点击时,可以先保存target到一个临时对象,然后再次的点击时,如果分析到当前的target为别的元素,即可对之前的临时对象进行操作,如果对其进设置隐藏之类.
      

  8.   


    谢谢,我判断在图片oncontextmenu事件,怎么把body的oncontextmenu事件去掉呢?
      

  9.   

    ff里不兼容 ontextmenu 事件:)
      

  10.   

    你的是兼容的。蛮好的,不知道还有没后遗症, oncontextmenu事件
      

  11.   


    没什么后遗症,只要保证id是唯一的至于对contextmenu 的控制,firefox是有限制的, 见 firefox 选项 -> 内容 -> javascript -> 高级