原生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 相关文章推荐
js 手机号码合法性验证代码集合
Sep 29 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
vue实现验证用户名是否可用
Jan 20 Vue.js
一种新的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
php多用户读写文件冲突的解决办法
2013/11/06 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
Js apply方法详解
2017/02/16 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python中set常用操作汇总
2016/06/30 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
python线程池如何使用
2020/05/28 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
python 爬取小说并下载的示例
2020/12/07 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
乌鸦喝水教学反思
2014/02/07 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
庆七一活动简报
2015/07/20 职场文书
《鲸》教学反思
2016/02/23 职场文书
Mysql数据库命令大全
2021/05/26 MySQL