原生js配合cookie制作保存路径的拖拽


Posted in Javascript onDecember 29, 2015

主要是运用了原生js封装了一个cookie,然后使用了三个事件做拖拽,分别是onmousedown,onmousemove,onmouseup,这三个事件其中两个需要添加事件对象,也就是event,事件对象是一个不兼容的东西,所以需要处理兼容性的问题,也就是oEvent = ev || event; 通过事件对象,获取鼠标点击屏幕时的那个点,然后减去被拖拽物体距离左边的一个距离,最终就可以获取到当前点击位置距离物体的距离。

最后在onmouseup的时候做了一个return false,主要是为了阻止在高版本浏览器下选中文字。通过cookie里面的addCookie方法,把物体拖动停止时的位置存在了cookie里面,然后在页面加载的时候就调用getCookie方法,取到物体所在的位置,也就做了一个用cookie存位置的拖拽。

如有下边的html:

<div id="drag">拖动我</div>

CSS:

#drag{width: 100px; height: 100px; background: red; position: absolute; top: 0; left: 0;cursor:move;}

使用用js实现拖动的代码如下:

function addCookie(name, value, iDay) {
  var oDate = new Date();
  oDate.setDate(oDate.getDate() + iDay);
  document.cookie = name + '=' + value + '; path=/; expires=' + oDate;
}

function getCookie(name) {
  var arr = document.cookie.split('; ');
  for (var i = 0; i < arr.length; i++) {
    var arr2 = arr[i].split('=');

    return (arr2[0] == name) && arr2[1]
  }
  return '';
}

window.onload = function () {
  var oDiv = document.getElementById('drag');
  drag(oDiv);

  var move_by = getCookie('move_cood');
  if (move_by) {
    var str = eval('(' + move_by + ')');

    oDiv.style.left = str[0] + 'px';
    oDiv.style.top = str[1] + 'px';
  }

  function drag(obj) {
    obj.onmousedown = function (ev) {
      var oEvent = ev || event;
      var disX = oEvent.clientX - obj.offsetLeft,
  disY = oEvent.clientY - obj.offsetTop;

      document.onmousemove = function (ev) {
        var oEvent = ev || event;

        obj.style.left = oEvent.clientX - disX + 'px';
        obj.style.top = oEvent.clientY - disY + 'px';
      };

      document.onmouseup = function () {
        document.onmousemove = null;
        document.onmouseup = null;

        obj.releaseCapture && obj.releaseCapture();

        addCookie('move_cood', '[' + obj.offsetLeft + ',' + obj.offsetTop + ']', 10);
      };

      obj.setCapture && obj.setCapture();
      return false;
    };
  }
};

以上就是原生js配合cookie制作保存路径的拖拽实现效果,希望对大家的学习有所启发。

Javascript 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
使用npm发布Node.JS程序包教程
Mar 02 Javascript
js实现不重复导入的方法
Mar 02 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
May 16 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
Jan 19 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
一种新的javascript对象创建方式Object.create()
Dec 28 #Javascript
JavaScrip常见的一些算法总结
Dec 28 #Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 #Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 #Javascript
Bootstrap实现响应式导航栏效果
Dec 28 #Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 #Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 #Javascript
You might like
SSI指令
2006/11/25 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Python如何调用JS文件中的函数
2019/08/16 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
python如何调用字典的key
2020/05/25 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
小班重阳节活动方案
2014/02/08 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
python编写五子棋游戏
2021/05/25 Python
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL