原生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下通过$.browser来判断浏览器.
Apr 05 Javascript
Jquery获取和修改img的src值的方法
Feb 17 Javascript
浅析Javascript中bind()方法的使用与实现
May 30 Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 Javascript
javascript数据类型详解
Feb 07 Javascript
详解浏览器渲染页面过程
Feb 09 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
May 03 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
JavaScript 闭包的使用场景
Sep 17 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 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
德劲1103二次变频版的打磨
2021/03/02 无线电
模仿OSO的论坛(四)
2006/10/09 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Windows下python3.7安装教程
2018/07/31 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
浅谈Python协程
2020/06/17 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
超级实用的8个Python列表技巧
2020/08/24 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
网络程序员自荐信
2014/01/25 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
专科生就业求职信
2014/06/22 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书