说说我对 写层拖拽效果的一点心得.

frankqnj 2008-12-04 08:22:20
对于拖拽 效果 目前流行的一些效果 都存在普遍 这样几个bug .. 有的 有这个 有的有那个 有的 比如网易博客的 居然N种bug都具备...

常见bug
1.兼容性 比如没有考虑opera 选择文字的问题. 这个解决起来很简单. 取消mousedown事件冒泡同时 别忘了取消 浏览器默认事件响应

2.没有给window.onblur 写事件侦听. 去remove mousemove的handlerfunc 导致 当浏览器失去焦点后 再回来 已经捕捉不到mouseup 所以仍然会跟随鼠标移动. ie的话 要特别注意使用setCapture 到document (典型现象就是. 你拖拽中.alt+tab切换到别的窗口 然后mouseup. 回来....拖拽层仍然跟着鼠标跑.)

3.当你先选取一部分文字后 或全选页面内容后再去 拖拽时.会遇到 捕捉不到mouse up的问题 这个 仍然是通过setCapture来解决的.其仅仅在ie 和opera有这个现象.
opera 取消冒泡和默认行为后 就可解决

4. 拖拽范围 忘了做些限制...这个比较少见.严格来说,也算不得bug 除了新手 会犯这个错误外 比较难见到.

5. 仍然是比较罕见的bug. 就是ff 浏览器独有的. 如果拖拽层在一个 frame页里 当鼠标拖拽 时 移动到 其他frame中 捕捉不到mouseup事件...

解决办法 :就我目前的解决办法 是 对于 当浏览器为ff 并满足 存在框架 两个条件时 . 不取消mousedown事件冒泡 对于ff来说 唯一的缺点就是
当 你的mousedown位置比较接近边缘时,会造成拖拽过程中 选择到其他层的 文字 等状况. 如果有耐心 可以在拖拽层底下加一个稍微大点的 透明层 以解决这个问题.

因为只有opera 浏览器. 即使你有mask层 的情况下 它一样无视. 仍然在拖拽中会选择文字的问题...

暂时就我个人来说 就发现了这些.
...全文
117 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudgamer 2008-12-04
  • 打赏
  • 举报
回复
说得不错
我也研究过一下
多多交流

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧