原生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 相关文章推荐
javascript之bind使用介绍
Oct 09 Javascript
firefox下input type=&quot;file&quot;的size是多大
Oct 24 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
javascript使用location.search的示例
Nov 05 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
基于js实现checkbox批量选中操作
Nov 22 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
React 组件转 Vue 组件的命令写法
Feb 28 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
vue+echarts实现多条折线图
Mar 21 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
python 正则表达式 概述及常用字符
2009/05/04 Python
python使用循环实现批量创建文件夹示例
2014/03/25 Python
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
python写日志封装类实例
2015/06/28 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
flask应用部署到服务器的方法
2019/07/12 Python
python数值基础知识浅析
2019/11/19 Python
Django values()和value_list()的使用
2020/03/31 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
年度考核自我鉴定
2013/11/09 职场文书
创新社会管理心得体会
2014/09/12 职场文书
python 实现的截屏工具
2021/05/08 Python
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
Go语言基础函数基本用法及示例详解
2021/11/17 Golang