<script language="JavaScript">
<!--
function mouseDown(e) {
 var ctrlPressed=0;
 var altPressed=0;
 var shiftPressed=0;
 if (parseInt(navigator.appVersion)>3) {
  if (navigator.appName=="Netscape") {
   var mString =(e.modifiers+32).toString(2).substring(3,6);
   shiftPressed=(mString.charAt(0)=="1");
   ctrlPressed =(mString.charAt(1)=="1");
   altPressed  =(mString.charAt(2)=="1");
   self.status="modifiers="+e.modifiers+" ("+mString+")"
  }
  else {
   shiftPressed=event.shiftKey;
   altPressed  =event.altKey;
   ctrlPressed =event.ctrlKey;
   self.status=""
    +  "shiftKey="+event.shiftKey 
    +", altKey="  +event.altKey 
    +", ctrlKey=" +event.ctrlKey 
  }
  if (shiftPressed || altPressed || ctrlPressed) 
   alert ("Mouse clicked with the following keys:\n"
    + (shiftPressed ? "Shift ":"")
    + (altPressed   ? "Alt "  :"")
    + (ctrlPressed  ? "Ctrl " :"")
   )
 }
 return true;
}
if (parseInt(navigator.appVersion)>3) {
 document.onmousedown = mouseDown;
 if (navigator.appName=="Netscape") 
  document.captureEvents(Event.MOUSEDOWN);
}
//-->
</script>

解决方案 »

  1.   

    http://www.javascripter.net/faq/ctrl_alt.htm
      

  2.   

    注意下边的,altKey和altLeft,ctrlKey和ctrlLeftevent 对象--------------------------------------------------------------------------------代表事件状态,如事件发生的元素,键盘状态,鼠标位置和鼠标按钮状态。成员表下面的表格列出了 event 对象引出的成员。请单击左侧的标签来选择你想要查看的成员类型。  属性     
     
    SHOW: 
    属性 
    集合 
    对象 
     属性 描述 
    Abstract 使用 event 对象获取高级流重定向器(ASX)文件中项目横幅的 Abstract 内容。 
    altKey 设置或获取 Alt 键的状态。 
    altLeft 设置或获取左 Alt 键的状态。 
    Banner 使用 event 对象获取高级流重定向器(ASX)文件中项目的 Banner 内容。 
    button 设置或获取用户所按的鼠标按钮。 
    cancelBubble 设置或获取当前事件是否要在事件句柄中向上冒泡。 
    clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条。 
    clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条。 
    contentOverflow 获取表明文档处理当前 LayoutRect 对象后是否包含附加的内容。 
    ctrlKey 设置或获取 Ctrl 键的状态。 
    ctrlLeft 设置或获取左 Ctrl 键的状态。 
    dataFld 设置或获取 oncellchange 事件影响的数据列。 
    fromElement 设置或获取事件发生时激活或鼠标将要离开的对象。 
    keyCode 设置或获取与导致事件的按键关联的 Unicode 按键代码。 
    MoreInfo 通过 event 对象获取高级流重定向器(ASX)文件中项目横幅的 MoreInfo 内容。 
    nextPage 获取打印模板中下页的位置。 
    offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。 
    offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。 
    propertyName 设置或获取对象上发生更改的属性名称。 
    qualifier 设置或获取由数据源对象提供的数据成员的名称。 
    reason 设置或获取数据源对象的数据传输结果。 
    recordset 从数据源对象设置或获取对默认数据集的引用。 
    repeat 获取 onkeydown 事件是否正在重复。 
    returnValue 设置或获取事件的返回值。 
    saveType 当 oncontentsave 触发时获取剪贴板类型。 
    screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标。 
    screenY 设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。 
    shiftKey 设置或获取 Shift 键的状态。 
    shiftLeft 设置或获取左 Shift 键的状态。 
    srcElement 设置或获取触发事件的对象。 
    srcFilter 设置或获取触发 onfilterchange 事件的滤镜对象。 
    srcUrn 获取触发事件的行为的统一资源名称(URN)。 
    toElement 设置或获取用户要将鼠标指针移动指向的对象的引用。 
    type 从 event 对象中获取事件名称。 
    wheelDelta 设置或获取滚轮按钮滚动的距离和方向。 
    x 设置或获取鼠标指针位置相对于父文档的 x 像素坐标。 
    y 设置或获取鼠标指针位置相对于父文档的 y 像素坐标。 
     
     
     属性集合集合 描述 
    books 返回捆绑到当前事件所影响的行上的 ActiveX&reg; 数据对象(ADO)书签的集合。 
    boundElements 返回页面上所有绑定到给定数据集的所有元素的集合。 对象对象 描述 
    dataTransfer 提供了对于预定义的剪贴板格式的访问,以便在拖曳操作中使用。 注释event 对象仅在事件中可用──这意味着,你可以在事件句柄中使用该对象,但不能在其它代码中使用。尽管所有事件属性都可通过所有的 event 对象访问,但是在某些事件中某些属性可能无意义。例如,fromElement 和 toElement 属性仅当处理 onmouseover 和 onmouseout 事件时有意义。在 Microsoft Visual Basic&reg; 脚本版本(VBScript)中,你必须通过 window 对象访问 event 对象。此对象在 Microsoft&reg; Internet Explorer 4.0 的脚本中可用。示例下面的例子使用了 event 对象来决定用户单击的位置是否在链接上,并且避免在 SHIFT 键按下时导航到链接。SHOWExample<HTML>
    <HEAD><TITLE>取消链接</TITLE>
    <SCRIPT LANGUAGE="JScript">
    function cancelLink() {
    if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
    window.event.returnValue = false;
    }
    </SCRIPT>
    <BODY onclick="cancelLink()">下面的例子将在浏览器的状态窗口上显示当前鼠标位置。<BODY onmousemove="window.status = 'X=' +  window.event.x + ' Y='
    + window.event.y">标准信息此对象定义在万维网协会(W3C)文档对象模型(DOM) 级别 2  中。应用到[ 对象名称 ] 
    平台 版本 
    Win16:  
    Win32:  
    WinCE:  
    Unix:  
    Mac:  
    版本数据当鼠标指向链接或链接获得焦点时在此列出。 
     window 
    将鼠标光标移动到应用到清单中的元素即可显示关于列出平台的可用信息。 
      

  3.   

    不错,我用下面代码测试通过,不知道netscape下是否有可行方法?<html>
    <head>
    <script language="JavaScript">
    <!--
    function mouseDown(e) {
     var ctrlPressed=0;
     var altPressed=0;
     var shiftPressed=0;
     if (parseInt(navigator.appVersion)>3) {
      if (navigator.appName=="Netscape") {
       var mString =(e.modifiers+32).toString(2).substring(3,6);
       shiftPressed=(mString.charAt(0)=="1");
       ctrlPressed =(mString.charAt(1)=="1");
       altPressed  =(mString.charAt(2)=="1");
       self.status="modifiers="+e.modifiers+" ("+mString+")"
      }
      else {
       shiftPressed=event.shiftKey;
       altPressed  =event.altKey;
       ctrlPressed =event.ctrlKey;
       
       leftShiftPressed=event.shiftLeft;
       leftAltPressed  =event.altLeft;
       leftCtrlPressed =event.ctrlLeft;
       
       self.status=""
        +  "shiftKey="+event.shiftKey 
        +", altKey="  +event.altKey 
        +", ctrlKey=" +event.ctrlKey 
        +", leftShiftKey="+event.shiftLeft 
        +", leftAltKey="  +event.altLeft 
        +", leftCtrlKey=" +event.ctrlLeft 
      }
      if (shiftPressed || altPressed || ctrlPressed) 
       alert ("Mouse clicked with the following keys:\n"
        + (shiftPressed&!leftShiftPressed ? "Shift ":"")
        + (altPressed&!leftAltPressed   ? "Alt "  :"")
        + (ctrlPressed&!leftCtrlPressed  ? "Ctrl " :"")
        + (leftShiftPressed ? "LeftShift ":"")
        + (leftAltPressed   ? "LeftAlt "  :"")
        + (leftCtrlPressed  ? "LeftCtrl " :"")
       )
     }
     return true;
    }
    if (parseInt(navigator.appVersion)>3) {
     document.onmousedown = mouseDown;
     if (navigator.appName=="Netscape") 
      document.captureEvents(Event.MOUSEDOWN);
    }
    //-->
    </script>
    </head>
    <body>
    </body>
    </html>
      

  4.   

    不知道netscape下是否有可行方法?
      

  5.   

    http://www.javascripter.net/faq/ctrl_alt.htm
      

  6.   

    http://www.javascripter.net/faq/ctrl_alt.htm
    似乎不能判断左右