原生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 相关文章推荐
jquery ready(fn)事件使用介绍
Aug 21 Javascript
简单的Jquery遮罩层代码实例
Nov 14 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
vue+vux实现移动端文件上传样式
Jul 28 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
小程序实现选择题选择效果
Nov 04 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
一种新的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 分库分表hash算法
2009/11/12 PHP
php数据库抽象层 PDO
2011/05/07 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
node.js require() 源码解读
2015/12/13 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
python 切换root 执行命令的方法
2019/01/19 Python
分析经典Python开发工程师面试题
2019/04/08 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python SVM 线性分类模型的实现
2019/07/19 Python
基于Python实现粒子滤波效果
2020/12/01 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
法人委托书范本格式
2014/09/15 职场文书
陪护人员误工证明
2015/06/24 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
2019大学生实习报告
2019/06/21 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python