CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

关于onmousedown

楼主Rodgu(棒子)2005-08-02 18:16:23 在 Java / Web 开发 提问

有听说在ie和firefox中,对onmousedown的处理方法是不一样的,但在页面中如何做到两者均能使用呢?  
   
  最好给个简单的例子 问题点数:100、回复次数:3Top

1 楼laughsmile(海边的星空)回复于 2005-08-02 18:29:58 得分 0

http://community.csdn.net/Expert/topic/3673/3673363.xml?temp=.2031061Top

2 楼laughsmile(海边的星空)回复于 2005-08-02 18:32:53 得分 0

在IE/Opera中,是window.event,而在Firefox中,是event  
  而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,而在Opera中则两者都支持。  
  我们还是用例子来说明。    
  //***********************************  
  <HTML>    
  <HEAD>    
  <TITLE>   event的跨浏览器测试   </TITLE>    
  <SCRIPT   LANGUAGE="JavaScript">    
  <!--  
  //Firefox中在写关于event的函数的时候,必须把event对象作为参数传递给函数,这样才能使用event对象    
  function   doTestEvent(   evt   )    
  {    
      //如果是IE/Opera,我们就用   srcElement   来获取触发事件的对象    
      //如果是Firefox,我们就用   target   来获取触发事件的对象    
      var   src   =   evt.srcElement   ?   evt.srcElement   :   evt.target;    
      alert(   src.value   );    
  }    
  //-->    
  </script>    
  </head>    
  <body>    
   
  <form   name="frmtest">    
  <input   type="button"   value="event   测试"   onclick="doTestEvent(event);"   name="bttest">    
  </form>    
   
  </body>    
  </html>    
  //***********************************  
   
  这里顺便说一下判断鼠标按键的问题。    
  在   IE   里面    
  左键是   window.event.button   =   1    
  右键是   window.event.button   =   2  
  中键是   window.event.button   =   4  
  没有按键动作的时候   window.event.button   =   0  
   
  在   Firefox   里面    
  左键是   event.button   =   0    
  右键是   event.button   =   2  
  中键是   event.button   =   1    
  没有按键动作的时候   event.button   =   0  
   
  在   Opera   7.23/7.54   里面    
  鼠标左键是   window.event.button   =   1  
  没有按键动作的时候   window.event.button   =   1    
  右键和中键无法获取    
   
  而在   Opera   7.60/8.0   里面    
  鼠标左键是   window.event.button   =   0  
  没有按键动作的时候   window.event.button   =   0  
  右键和中键无法获取    
   
  下面我们写一个能在   IE4.01+/Firefox   0.9+/Opera   7.23+   环境中均能运行正常的小程序,功能是用鼠标拖动层。    
  //***********************************  
  <HTML>    
  <HEAD>    
  <TITLE>   可用鼠标拖动的层   </TITLE>    
  <SCRIPT   LANGUAGE="JavaScript">    
  <!--  
  var   moving   =   false;    
  var   initX     =   0;    
  var   initY     =   0;    
   
  //*******************    
  //   获取触发事件的对象    
  //*******************    
  function   findSrc(evt)    
  {    
      return(   evt.target   ?   evt.target   :   evt.srcElement   );    
  }    
   
  function   start(evt)    
  {    
          //按下鼠标左键才允许移动    
          //evt.button   ==   1   IE/Opera   7.23/7.54    
          //evt.button   ==   0   Firefox/Opera   7.6+    
          if   (   evt.button   ==   1   ||   evt.button   ==   0)    
          {    
                  moving   =   true;    
                  initX     =   evt.offsetX   ?   evt.offsetX   :   evt.layerX;    
                  initY     =   evt.offsetY   ?   evt.offsetY   :   evt.layerY;    
                  findSrc(   evt   ).style.cursor   =   "move";    
                  window.status   =   "开始(button="   +   evt.button   +   ")";    
          }   else   {    
                  stop(   evt   );    
          }    
  }    
   
  function   stop(   evt   )    
  {    
          moving   =   false;    
          findSrc(   evt   ).style.cursor   =   "";    
          window.status   =   "结束(button="   +   evt.button   +   ")";    
  }    
   
  function   move(evt)    
  {    
          //按下鼠标左键才允许移动    
          //evt.button   ==   1   IE/Opera   7.23/7.54    
          //evt.button   ==   0   Firefox/Opera   7.6+    
          if   (moving   &&   (   evt.button   ==   1   ||   evt.button   ==   0   ))    
          {    
                  var   intx   =   document.body.scrollLeft   +   evt.clientX;   //获取当前鼠标位置的X坐标    
                  var   inty   =   document.body.scrollTop   +   evt.clientY;   //获取当前鼠标位置的Y坐标    
   
                  var   div   =   findSrc(   evt   );    
                  div.style.top   =   inty   -   initY;    
                  div.style.left   =   intx   -   initX;    
                  window.status   =   "X="   +   intx   +   "   Y="   +   inty   +   "   button="   +   evt.button;    
          }   else   {    
                  window.status   =   "已停止(button="   +   evt.button   +   ")";    
          }    
  }  
  //-->    
  </SCRIPT>    
  </HEAD>    
   
  <BODY>    
  <div   id="mdiv"    
            style="position:   absolute;   width:300px;   height:   200px;   background-color:   #FFFFE1;"    
            onmousedown="start(   event   );"    
            onmouseup="stop(   event   );"    
            onmouseout="stop(   event   );"    
            onmousemove="move(   event   );"></div>    
  Top

3 楼joneyonly()回复于 2005-08-02 18:35:03 得分 0

markTop

相关问题

  • onmousedown的 问 题
  • onmousedown事件中的sender怎么用?
  • 为何DBGrid的OnMouseDown不响应!
  • 对于一个没有OnMouseDown的控件再不改变控件的前提下,如何处理ONMouseDown?谢谢
  • OnClick事件和OnMouseDown事件哪个先被触发?
  • 在OnMouseDown事件中,button的值怎么表示?
  • 请教:如何拦截窗体的OnClick()或OnMouseDown事件?
  • 用函数怎样触发select onmousedown 事件
  • 怎样把onmousedown等鼠标事件放在函数里判断?
  • 怎么才能onMouseOver,onMouseOut,onMousedown时tr背景各是一种?

关键词

得分解答快速导航

  • 帖主:Rodgu

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo