Discuz教程网

JS高级拖动技术 setCapture,releaseCapture

[复制链接]
authicon dly 发表于 2011-9-16 07:45:02 | 显示全部楼层 |阅读模式

  1. <script type="text/javascript">
  2. <!--
  3. window.onload=function(){
  4. objDiv = document.getElementById('drag');
  5. drag(objDiv);
  6. };
  7. function drag(dv){
  8. dv.onmousedown=function(e){
  9. var d=document;
  10. e = e || window.event;
  11. var x= e.layerX || e.offsetX;
  12. var y= e.layerY || e.offsetY;
  13. //设置捕获范围
  14. if(dv.setCapture){
  15. dv.setCapture();
  16. }else if(window.captureEvents){
  17. window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
  18. }
  19. d.onmousemove=function(e){
  20. e= e || window.event;
  21. if(!e.pageX)e.pageX=e.clientX;
  22. if(!e.pageY)e.pageY=e.clientY;
  23. var tx=e.pageX-x;
  24. var ty=e.pageY-y;
  25. dv.style.left=tx;
  26. dv.style.top=ty;
  27. };
  28. d.onmouseup=function(){
  29. //取消捕获范围
  30. if(dv.releaseCapture){
  31. dv.releaseCapture();
  32. }else if(window.captureEvents){
  33. window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
  34. }
  35. //清除事件
  36. d.onmousemove=null;
  37. d.onmouseup=null;
  38. };
  39. };
  40. }
  41. //-->
  42. </script>
  43. <div id="drag" style="position:absolute;left:12px;top:24px;width:100;height:150;border:1px solid #000000;z-index:1;background:#eeeeee">drag me</div>
复制代码

setCapture 的意思就是设置一个对象的方法被触发的范围,或者作用域。
如果不设置,则div只在当前窗口内被触发。如果设置,则在整个浏览器范围内被触发,也就是可以拖到浏览器外面



上一篇:JavaScript实现带自动提示的文本框效果代码
下一篇:js中判断文本框是否为空的两种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 11:49

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表