BOM操作常用方法Qian锋逆战

BOM

window  BOM的根元素

注意:

使用window的方法时可以不用加window

        如:window.open();

         open()


弹出框open

如:open("http://163.com","我的网页","width=200,height=200");

弹出宽高为200的窗口,内容为网易网页

不用了浏览器已经做了对弹出框的限制


close():关闭浏览器网页

document.onclick=function(){

            close();//一般不用

        }


点击网页时关闭网页,现在一般不用了


innerWidth和innerHeight

这个是可视窗口的宽高,和document.documentElement.cilentWidth , document.documentElement.clientHeight一样


outerWidth和outerHeight

浏览器的窗口宽高,也就是整个浏览器打开的窗口


screenLeft、 screenTop  和screenX 、 screenY

上面的两组是相同的都是指当前窗口左上角相对于屏幕左上角的坐标

只能获取,不能设置

console.log(screenLeft,screenTop);

        console.log(screenX,screenY);



location  表示本地

reload( );重载

重载以前用,现在不用

location.reload();



重点记忆AAA级location.href、location.assign、location.replace

location.href跳转网页,同时也可以获取网页地址,有历史记录

location.assign跳转网页,有历史记录,但不能获取网页地址

location.replace替换当前网页,因为是替换所以这个没有历史记录,也无法获取网页地址

 document.onclick=function(){

            console.log(location.href);

            location.href="http://www.163.com";

            也是跳转页面,href除了跳转页面,还可以获取当前页面的网址

            assign只能跳转页面

            location.assign("http://www.163.com");

            替换当前页面,也是跳转页面,上面两个有历史记录,下面的这个没有历史记录

            location.replace("http://www.163.com");

        }


location.hash获取地址栏中#后面的内容,也就是锚点的标记名

location.search获取地址栏中?后面的内容,也就是访问地址的参数


现在了解,后面讲

console.log(location.pathname);//地址栏中文件路径和名称

console.log(location.port);//地址栏中的端口号

console.log(location.protocol);//地址栏中的协议

console.log(location.hostname);//地址栏中的域名


history  历史记录重点记忆AAA级

history.back( )回退网页,退回上一个页面

history.forward( )前进到下一个页面,在有下一个页面记录的情况下

history.go(1)跳转前进或者后退到第几个页面。正值为前进,负值为后退,0是刷新页面


screen  屏幕

screen.widthscreen.height全屏幕宽高

console.log(screen.width,screen.height);  //全屏幕宽高


screen.availWidth和screen.availHeight不带任务栏的屏幕宽高

console.log(screen.availWidth,screen.availHeight);//不带任务栏的屏幕宽高



navigator  浏览器信息,后期做兼容需要用到

navigator.userAgent用户浏览器信息AAA级

// 获取用户浏览器信息

      console.log(navigator.userAgent);




重点:事件

事件初步解释

document.addEventListener("click",clickHandler);

IE8以上支持

DOM.addEventListener(事件类型,事件回调函数);

给DOM元素添加一个事件侦听(监听),只能收到对应事件类型的消息,

当收到click这个消息,执行事件回调函数

        click这个消息是系统消息

function clickHandler(e){

            console.log(e);

        }

事件回调函数

            e  有且仅有一个参数e

            e 是一个事件对象,侦听事件收到消息时获得的事件对象


事件侦听和抛发

注意:事件都是必须先侦听,再抛发

document.addEventListener("天王盖地虎",anhaoHandler);


        // 这里的new Event()指创建一个事件对象

        var  evt=new Event("天王盖地虎");

        evt.a=10;

        // 在document里发出公告,将刚才新建的事件发送给document

        // 向document抛发新建的event事件

        document.dispatchEvent(evt);


        function anhaoHandler(e){

            // 注意:这里的e就是我们创建的时间对象,它们是相等的

            console.log(e===evt);

            // 我们在上面给时间对象添加元素,在函数里e会获取的,因为他俩是同一个对象

            console.log(e.a);

        }


事件分两种类型:系统事件和自定义事件,老师未详细讲解

烂代码案例,引以为戒

// 高耦合

        // 烂代码

        var obj1={

            a:function(){

                obj2.d(5);

            },

            b:function(sum){

                console.log(sum)

            }

        }


        var obj2={

            c:function(){

                obj1.b(10);

            },

            d:function(s){

                console.log(s);

            }

        }


        // 对象间的数据传递

        // obj1.a();

        // obj2.c();


使用事件来解决烂代码问题(要像这个靠拢)

// 事件传播

        // 解耦

        var obj1={

            a:function(){

                //注意在这里 this  是对象的方法中this就是该对象自身,这里this就是obj1

                // this.b就是obj1下的b

                // 受到obj2.c发出的事件对象时开始执行obj1.b

                document.addEventListener("aaa",this.b);

            },

            b:function(e){

                // 传到这里

                console.log(e,e.s);

            }

        }


        var obj2={

            v:10,

            c:function(){

                var s=5;

                // 创建一个事件对象

                var evt=new Event("aaa");

                // 将s=5赋值给e里面的新s

                evt.s=s;

                // 在document里发出公告,将刚才新建的事件发送给document

                // 向document抛发新建的evt事件,这时obj1.a里会侦听到

                document.dispatchEvent(evt);

            },

            d:function(){


            }

        }

打算执行obj2.c 将局部变量5传递给obj1的方法b中


事件原理(重点)

div0.addEventListener("click",clickHandler0,true);


div0.addEventListener(事件类型,事件回调函数,是否捕获时执行);

事件类型必须是字符串,可以设置为任意字符串,但是部分字符串是系统事件类型

事件回调函数指向一个函数,当收到事件时执行该函数,如果没有收到不执行函数,写侦听事件时不执行函数

是否捕获时执行默认值是false,在冒泡时执行,捕获时不执行,

                如果设置为true,在捕获时执行

详细请看4月2号下午第二节课视频和4月2号3、事件原理代码案例

原理

事件分三步进行

1:捕获  ------>   2:目标  ------>   3:冒泡


1:捕获   从在外层向里依次捕获,这时获取的元素排序就是从外往里依次排序


2:目标   就是捕获到达了我们点击的目标(自己理解的)


3:冒泡   是在捕获到达目标后,开始原方向返回时回再次经历每个元素,这时获取的元素排序就是从里往外依次排序,与捕获相反


div0.addEventListener(事件类型,事件回调函数,是否捕获时执行);中的第四个属性值是设置是否捕获的,


e.stopPropagation();

如果在冒泡是我们得到我们想要的值,不想在继续冒泡,可以在改层设置e.stopPropagation();

这个存在兼容问题:IE8及以下时用  e.cancelBubble=true;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,146评论 0 3
  • _________________________________________________________...
    fastwe阅读 281评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,028评论 0 2
  • Call 和 Apply 的区别语法:function.call(thisObj [, arg1[, arg2[,...
    HeroXin阅读 256评论 0 1
  • js简介 Js是一种基于事件和对象驱动的解释性、松散性的语言。 一切皆对象 javascript 布兰登艾奇 ...
    塔库纳玛哈哈阅读 1,198评论 0 2