李权20200914

BOM:

window对象有两个含义:

​ 1.作为JavaScript操作BOM的一个接口

​ 2.又是ECMAScript定义的全局变量,在JavaScript中定义的任何一个对象,变量,函数,都以window作为全局变量,因此有权访问parseInt等方法

注意:定义的全局变量不能用delete删除,直接在window定义的变量可以删除

注意2:尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在

​ let c = window.b;

​ console.log(c); //undefined

​ let a = b;

​ console.log(a);//Uncaught ReferenceError: b is not defined

js事件 -- 鼠标滚轮事件

鼠标滚轮事件在 IE和chrome中监听的事件是 onmousewheel,但是火狐(firefox)不兼容,它监听的鼠标滚轮事件是DOMMmouseScroll,而且必须用addEventListener监听

事件监听事件的的兼容:

IE是AttachEvent 事件要加on

chrome是谷歌事件,addEventListener 事件不加on

所以鼠标滚轮事件 的火狐和IE和Chrome的写法

chrome: addEventListener ommousewheel

IE :AttachEvent onmousewheel

firefox: addEventListener DOMMouseScroll

所以浏览器兼容我们得写一个函数封装

​ //封装的鼠标滚轮事件的浏览器兼容

​ function mousewheel(obj,event,fn){

​ //obj是事件对象

​ //event是事件类型

​ //fn 是回调函数

​ //判断 是否支持attachEvent 如果不支持使用addEventListener

​ if(obj.attachEvent){

​ obj.attachEvent('on'+event,fn)

​ }else{

​ obj.addEventListener(event,fn)

​ }

​ }

​ mousewheel(window,'mousewheel',fn);

​ mousewheel(window,'DOMMouseScroll',fn)

​ function fn(){

​ alert(123)

​ }

在chrome和IE中判断向上滚还是向下滚用的API 是e.wheelDelta

但是在firefox是e.detail,

注意 :e.wheelDelta 向上滚为正值,向下是负值,e.detail向上为负值,向下为正值

评论