推荐:怎么用javascript进行拖拽(2)

作者:雪山老人 来源:sohotx.com 时间:2007-09-21 20:14:00 

你首先要声明一个evnet对象.不论何时你移动鼠标/点击/按键等等,会对应一个event的事件.在Internet Explorer里event是全局变量,会被存储在window.event里. 在firefox中,或者其他浏览器,event事件会被相应的自定义函数获取.当我们将mouseMove函数赋值于document.onmousemove,mouseMove会获取鼠标移动事件.

(ev = ev || window.event) 这样让ev在所有浏览器下获取了event事件,在Firefox下"||window.event"将不起作用,因为ev已经有了赋值.在MSIE下ev是空的,所以ev将设置为window.event.

因为我们在这篇文章中需要多次获取鼠标坐标,所以我们设计了mouseCoords这个函数,它只包含了一个参数,就是the event.

我们需要运行在MSIE与Firefox为首的其他浏览器下.Firefox以event.pageX和event.pageY来代表鼠标相应于文档左上角的位置.如果你有一个500*500的窗口,而且你的鼠标在正中间,那么paegX和pageY将是250,当你将页面往下滚动500px,那么pageY将是750.此时pageX不变,还是250.

MSIE和这个相反,MSIE将event.clientX与event.clientY来代表鼠标与ie窗口的位置,并不是文档.当我们有一个500*500的窗口,鼠标在正中间,那么clientX与clientY也是250,如果你垂直滚动窗口到任何位置,clientY仍然是250,因为相对ie窗口并没有变化.想得到正确的结果,我们必须加入scrollLeft与scrollTop这两个相对于文档鼠标位置的属性.最后,由于MSIE并没有0,0的文档起始位置,因为通常会设置2px的边框在周围,边框的宽度包含在document.body.clientLeft与clientTop这两个属性中,我们再加入这些到鼠标的位置中.

很幸运,这样mouseCoords函数就完成了,我们不再为坐标的事操心了.

捕捉鼠标点击

下次我们将知道鼠标何时点击与何时放开.如果我们跳过这一步,我们在做拖拽时将永远不知道鼠标移动上面时的动作,这将是恼人的与违反直觉的.

这里有两个函数帮助我们:onmousedown与onmouseup.我们预先设置函数来接收document.onmousemove,这样看起来很象我们会获取document.onmousedown与document.onmouseup.但是当我们获取document.onmousedown时,我们同时获取了任何对象的点击属性如:text,images,tables等等.我们只想获取那些需要拖拽的属性,所以我们设置函数来获取我们需要移动的对象.

运行代码框

标签:拖拽,javascript
0
投稿

猜你喜欢

  • JavaScript创建可维护幻灯片效果

    2008-06-21 16:42:00
  • ASP中遍历和操作Application对象的集合

    2007-09-13 12:45:00
  • MySQL数据库数据备份和恢复详解

    2009-07-15 10:51:00
  • 分享216色网页拾色器(调色板)

    2007-09-27 12:33:00
  • SQL Server数据转换服务基本概念介绍

    2009-01-20 15:52:00
  • DateDiff函数在Sql与Access中的区别

    2009-06-04 18:02:00
  • Ajax发明人:Ajax并不适合所有网站

    2008-01-30 12:20:00
  • 实例讲解如何利用crontab定时备份MySQL

    2009-01-04 13:06:00
  • 微软建议的ASP性能优化28条守则(1)

    2008-02-22 16:54:00
  • oracle下加密存储过程的方法

    2009-02-28 10:50:00
  • 官方是这样定义 DOCTYPE HTML PUBLIC 的

    2007-05-31 09:43:00
  • chr(9)、chr(10)、chr(13)、chr(32)与特殊空格

    2009-07-03 15:26:00
  • AspJpeg组件:介绍、注册、高级使用方法

    2010-01-25 12:42:00
  • Alexa排名数据xml接口及其参数说明

    2008-11-07 13:03:00
  • 小技巧解决“FF不能读取outerHTML”的问题

    2009-02-10 10:44:00
  • DW自带的行为制作弹出菜单

    2008-05-16 11:38:00
  • XML十项特点

    2008-04-05 13:49:00
  • MySQL安全大讲堂:MySQL数据库安全配置

    2009-10-18 11:24:00
  • INPUT的对齐问题

    2008-05-24 08:32:00
  • 三分钟学会Sql Server的复制功能[图]

    2008-07-18 12:18:00
  • asp之家 网络编程 m.aspxhome.com