[妙味DOM]第六课:鼠标滚轮和COOKIE
知识点总结:
- 鼠标滚轮事件
存在兼容性问题:
  IE/chorme  :   onmousewheel
  FF : DOMMouseScroll,必需用在addEventListener下,例如:
if (obj.addEventListener) {
    obj.addEventListener('DOMMouseScroll',fn,false);
}
注:addEventListener也需要做兼容,该方法在FF和chorme有效,在IE中是attachEvent
滚轮属性:
	  IE/chorme:
		    ev.wheelDelta
				      下:-120
				      上:120
  FF:
		    ev.detail
			      下:3
			      上:-3
考虑到兼容性,通过布尔值为进行兼容的处理
        var oDiv = document.getElementById('div1');
        var b = true; //默认方向:向下
        //事件绑定兼容
        var bind = function(obj,eventName,eventFn){
            if (obj.addEventListener){
                obj.addEventListener(eventName,eventFn,false);
            } else {
                obj.attachEvent('on'+eventName,function(){
                    eventFn.call(obj);
                });
            }
        };
        //获取方向
        var getDir = function(dir){
            if (dir){
                return '向下';
            } else {
                return '向上';
            }
        };
        if (oDiv.addEventListener){
            bind(oDiv,'DOMMouseScroll',function(ev){
                //firefox:下(3) 上(-3)
                var ev = ev || event;
                b = ev.detail>0 ? true : false;
                console.log(getDir(b));
            });
            bind(oDiv,'mousewheel',function(ev){
                //IE和chrome: 下(-120) 上(120)
                var ev = ev || event;
                b = ev.wheelDelta<0 ? true : false;
                console.log(getDir(b));
            });
        }
如果阻止鼠标的默认行为:
	  IE/chorme : return false
	  FF : 
		    obj.onclick = fn    =>return false;
		    obj.addEventListener('click',fn,false)  => ev.preventDefault();
兼容处理:
            if(ev.preventDefault) {
                ev.preventDefault();
            }
- cookie
1、cookie以域名的形式来存放的
2、一个域名下存放的cookie个数有限制,不同浏览器存放的个数不一样
3、cookie的内容大小也有限制,不同浏览器存放大小不一样
4、cookie默认是临时存放的,即浏览器关闭消失(注:不是选项卡)
5、cookie存放格式: document.cookie = "名字=值" 获取cookie,即alert(document.cookie),显示结果把当前网站所有的cookie显示出来,并用分号+空格的形式串联起来 例如:
document.cookie = "username=joya"
document.cookie = "age=11"
alert(document.cookie) =>结果为username=joya; age=11 document.cookie="名字=值;expires="+字符串格式的时间 即:
var oDate = new Date(); 获取当前时间
oDate.setDate(oDate.getDate()+7); //cookie存放7天,setDate(18)表示设置日期18号,通常cookie的使用是当前的时间+几天,因此用getDate来获取当前日期+多少天
document.cookie = "username ="+ encodeURI("\njoya") +";expires=" + oDate.toGMTString();
//注:1、需要是字符串格式的时间,oDate是对象,需要进行转换,即toGMTString
2、内容最好编码存放,即encodeURI('值'),与这个相反的有decodeURI('编码') alert(decodeURI(document.cookie));
- 封装cookie(增加setCookie,读取getCookie,删除removeCookie)
见js框架
- localStorage
localStorage.getItem('rd_lang') 获取
localStorage.setItem('rd_rang') 设置
[妙味DOM]第六课:鼠标滚轮和COOKIE的更多相关文章
- [妙味DOM]第五课:事件深入应用
		知识点总结 鼠标拖拽原理: 1.鼠标按下后开始移动,鼠标抬起停止移动,即onmousedown中要包括onmousemove和onmouseup 2.获取位置的计算:获取鼠标的当前位置-鼠标在物体中的 ... 
- [妙味DOM]第四课:Event-事件详解2
		知识点总结 事件捕获 obj.addEventListener('click',fn,true) 从外往里 obj.addEventListener('click',fn,false) 从里往外(冒泡 ... 
- [妙味DOM]第三课:Event-事件详解1
		知识点总结 焦点事件 onfocus 获取焦点 onblur 失点焦点 obj.focus() 给指定元素设置焦点 obj.blur() 取消指定元素的焦点 obj.select() 选择指定元素里的 ... 
- [妙味DOM]第一课:DOM基础概念、操作
		知识点总结 childNodes.children子节点列表集合.nodeType节点类型.nodeName.nodeValue.attributes属性列表集合 childNodes和childre ... 
- [妙味 DOM] 第二课:DOM、BOM相关方法及属性
		知识点总结 获取样式.增加样式.删除样式函数的封装 表格 tHead tBodies tFoot rows 行 cells 列 表单 表单可以通过name来获取元素:表单.name值 onchange ... 
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
		知识点总结: JSONP(JSON with Padding): 1.script标签 2.用script标签加载资源是没有跨域问题的 在资源加载进来之前定义好一个函数,这个函数接收一个参数(数据), ... 
- [妙味JS基础]第九课:定时器管理、函数封装
		知识点总结 函数封装 回调函数 实例:抖动函数 获取当前的位置 通过数组来实现,一正一负,直到恢复成0为止. 当前位置与数组中各值相加 
- [妙味JS基础]第二课:for应用、this关键字
		知识点总结 getElementsByTagName(动态方法) 与 getElementById(静态方法) 的区别 1.ID前面只能跟document,不能跟其他元素,比如:document.ge ... 
- [妙味JS基础]第一课:属性操作、图片切换、短信发送模拟
		知识点总结 HTML的属性操作:读.写 元素.属性名 => “读” 元素.属性名=新的值 => “写” 例如: oBtn.value => “读” oBtn.value='按钮' = ... 
随机推荐
- PHP之MYSQL数据库
			MYSQL数据库简介 1.什么是数据库? 数据库(database) 就是一个由一批数据构成的有序集合,这个集合通常被保存为一个或多个彼此相关的文件. 2.什么是关系型数据库? 数据被分门别类的存 ... 
- 【NOIP2014】DAY2题解+代码
			T1 傻逼题……不想写贴昨年代码了. 总之随便怎么搞都能过. 15年的DAY2T1怎么那么毒瘤真是越活越倒退] #include <iostream> #include <fstre ... 
- eclipse中svn提交过滤不需要的文件
			eclipse>Preference>Team>Ignored Resource 添加 .settings .classpath .project 
- Maven之(三)Maven插件
			Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,像编译是通过maven-compile-plugin实现的.测试是通过maven-surefire-p ... 
- 关于Mac中Clion使用OpenCV
			关于Mac中Clion使用OpenCV 目标 Clion能够使用OpenCV 步骤 下载安装cmake,官网下载 下载OpenCV mac/linux版 使用cmake gui编译opencv安装包, ... 
- udp接收
			char receive_buffer[500] = {0}; std::vector<std::string> mysplit(std::string str,std::string p ... 
- 如何使用jconsole(英文)
			http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html 
- vc++项目 : error PRJ0002 : 错误的结果 1 (从“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.exe”返回)。
			右击工程->属性->配置属性->清单工具->输入和输出->嵌入清单,把是改成否 
- 开发中常用的 $.extend 总结
			工作中常见$.extend( ),所以就查了一些它的用法. 一.Jquery的扩展方法原型是: extend(dest, src1, src2, src3...) 它的含义是将src1,src2,sr ... 
- 一步步优化JVM三:GC优化基础
			本节主要描述关于垃圾回收器性能的三个指标,三个关于垃圾回收器优化的基本原则,以及优化HotSpot VM的垃圾回收器的信息收集,在这些指标中权衡以及信息的收集是非常重要的. 性能指标 吞吐量:衡 ... 
