【郑州-140期】什么是BOM?

大家好,我是IT修真院郑州分院第三期的学员高雪峰,一枚正直、纯洁、善良的前端程序员

今天给大家分享一下,修真院官网JS(职业)任务4,深度思考中的知识点——BOM

1.背景介绍

Browser Object Model,浏览器对象模型,简称BOM,是JavaScript在使用过程中极其重要的组成部分,也是在浏览器实现JavaScript的核心。多年来,BOM缺少一个比较统一的标准,基本上都是各大浏览器提供商各自为政,对其进行扩展补充。W3C为了把浏览器中的JavaScript最基本部分标准化,已经将BOM的主要方面纳入到了HTML5标准中。接下啦,我们来认识一下它。

2.知识剖析

2.1什么是BOM?

BOM,浏览器对象模型。其核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重的角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,这意味着在网页中定义的任何一个对象、变量、函数,都以window作为其Global对象,因此有权访问parseInt()等方法。它包含的对象有:window对象、location对象、screen对象、history对象等。


window的全局函数
window的全局属性

window对象作为ECMAScript规定的Global对象,所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。但使用var定义全局变量,和直接使用window对象定义全局属性,也存在细微的差别:全局变量不能通过delete操作符删除,而window定义的属性可以。

var name = '大娃';

function sayName(){

alert(this.name);

}

alert(window.name); //'大娃'

sayName();  //'大娃'

window.sayName();  //'大娃'

//delete删除变量的演示 IE8之前对window使用方法会抛出错误

var age = 28;

window.color = 'red';

delete window.age;

delete window.color;

console.log(window.age);  //28

console.log(window.color);  //undefined

2.2 窗口关系:top、parent、self的区别

top、parent、self都是window对象的属性。

top: 其始终指向最高(最外)层的框架,也就是浏览器窗口。

parent:其始终指向当前框架的直接上层框架。

self:其始终指向window。这里的window就同self的本意一样,指的是当前window,不是浏览器窗口。


多种方法查找节点

2.3 窗口位置

window对象的位置的属性和方法很多。原因就像开场的时候介绍的那样,起初由于各浏览器提供商的各自为政导致的。抄录一段红宝书中的话:

IE、Safari、Opera 和Chrome都提供了screenLeft和screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置。Firefox则在screenX和screenY属性定义了相同的窗口位置信息,Safari、Chrome同时支持这两个属性。Opera虽然支持这两个属性,但是与screenLeft和screenTop属性并不对应。

var leftPos = (typeof window.screenLeft == 'number') ? window.screenLeft : window.screenX;

var topPos = (typeof window.screenTop == 'number') ? window.screenTop : window.screenY;

2.4 窗口大小

窗口大小的属性,各大浏览器供应商还是比较一致的(IE9+)。目前有四个属性:innerWidth、innerHeight、outerWidth和outerHeight。innerWidth、innerHeight表示该容器中页面视图的大小(减去边框的宽度)。outerWidth、outerHeight表示浏览器窗口本身的尺寸(无论是从最外层的window对象还是从某个框架访问)。在Chrome中,会返回同样的值,表示视口(viewport)大小而非浏览器窗口大小。

在各浏览器中,使用document.documentElement.clientWidth和document.documentElement.clientHeight保存页面的视口信息。IE6混杂模式下,需通过document.body.clientWidth和document.body.clientHeight获取相同的信息。

2.5 导航和打开、关闭窗口

使用window.open()方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。这个方法接收4个参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。使用window.close()方法自动关闭窗口,不常使用。

通常只需传递第一个参数,最后一个参数只在不打开新窗口的情况下使用。传递了第二个参数,该参数可以已有窗口或者框架的名称,也可以是_self、_parent、_top、_blank。若不存在第二个参数的名称,则等同于设置_blank,即打开新窗口。第三个参数是一个逗号分隔的设置字符串,表示在新窗口中都显示哪些特性。

document.onclick = function(){

//在新窗口中打开高度为500,宽度为500,纵坐标为0,横坐标为200的qq网页(第三个参数内填入相关的数值)

window.open("http://qq.com","_blank","height=500,width=500,top=0,left=200")

}

第三个参数可输入的属性

3.常见问题

问题: 如何显示不同的对话框信息?

4.解决方案

浏览器通过alert()、confirm()、prompt()、print()方法来调用系统对话框向用户显示信息。通过这三个方法打开的对话框都是同步和模态的,也就是说显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又会恢复执行。

alert():接收一个字符串并将其显示给用户。

confirm():接收一个字符串,并将其显示给用户。返回的布尔值:true表示单击OK,false表示单击Cancel或者右上角的关闭按钮。

prompt():接收两个参数,要显示给用户的文本提示和文本输入域的默认值(可以是一个空字符串)。如果用户单击了OK按钮,则返回文本输入域的值;如果用户单击了Cancel或者右上角的关闭按钮,则该方法返回null。

print():打印对话框是异步显示的,能够将控制权立即交还给脚本。

控制台打印一下内容看不同的效果:

alert(Hello World!);

confirm("Are you sure?");

prompt("What is your name?" ,"Mike");

print(this);

5.编码实战

参看上边简单的demo演示,暂无更多demo!

6.扩展思考

问题: _self、_parent、_top、_blank的区别?

target="_blank",将链接的内容打开在新的浏览器窗口中;

_self,是指在本身这个网页窗口来打开新的网页链接;

_parent表示父窗口进行新的网页跳转;

_top表示整页窗口进行新的网页跳转。

7.参考文献

参考一:《JavaScript高级程序设计》

参考二: BOM之window对象:http://www.tuicool.com/articles/vYzqaa6

参考三:BOM的window对象的属性及其方法:http://www.cnblogs.com/lfbs/p/5913692.html

参考四:BOM window对象方法:http://www.cnblogs.com/yd09023/p/5865280.html

8.更多讨论

讨论点:大家对于window对象还有哪些认识,分享一下?

PPT链接:https://ptteng.github.io/PPT/PPT/js-04-bom.html#/

视频链接:https://v.qq.com/x/page/f0514wzflte.html


什么是BOM?_腾讯视频

文本链接:http://www.jnshu.com/daily/25827?dailyType=others&total=143&page=1&uid=7446&sort=0&orderBy=3

------------------------------------------------------------------------------------------------------------------------

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

你可以直接点击此链接:http://jnshu.com/login/1/84959420

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

推荐阅读更多精彩内容