BOM对象即浏览器内置对象,现今流行的浏览器内核有Safri,Firefox,Chrome,Opera,IE其中IE的兼容性是最蛋疼的在10及其过后还好点,但是现在IE基本上淘汰,而国内像360这种垃圾玩意儿包了个IE壳导出吹

真是不像样子,也不要脸。

BOM对象在不同内核的浏览器,有很多兼容性问题,比如一些属性上等等,以及后面说的Dom更是很多差别。

1 全局作用域

window在SPA,单页面应用程序里面处于整个BOM树最顶端,也就是全局作用域的大哥,所有的对象都直接间接的寄宿在window对象下

var obj='dddd';与window.obj='ddd';的不同在于var申明(注意js中申明也就是定义)的变量不能被delete删除掉,即删除的结果返回false,因为这样申明的变量配置为不可删除的特性为true;而window.obj则相反

delete obj  ->false;

delete window.obj -->true;

2 window对象树

为什么这么说,因为有了frameset的引入,一个web页面可能有很多子页面通过frame的方式组合成一张页面,那么这个时候window自然已经不是最顶层的对象了,响应的这些子window对象都由一个叫top对象管理着,自然的top对象才是真正的王者,在他下面管理着一个frames数组,我们的页面框架就放置在这个数组里面,如果想要访问某个frame可以使用top.frames[0]或者top.frames[name]来访问,由于window成为window树中一名成员,window通过parent也可以访问上级frame对象,所以访问具有多条路径

top.frames[0];top.frames[name],也可以不适用top前缀,frames[0],也可以使用window.parent层层查找,而每个frame对象具有name属性

3 窗口位置

什么是窗口,也就是我们通常见到的一个web页面,也就对应一个window,这个window可能是SPA,也可以是通过frames嵌入的;

窗口位置:即窗口左上角与屏幕左上角的偏移距离;通常在大多数浏览器里面使用window.screenLeft,window.screenTop来访问,而在forefox里面使用window.screenX,window.screenY来访问;

4 窗口大小

由于web页面具有边框这个玩意儿,便有了outerWidth,outerHeight和innerWidth,innerHeight两种方式来认为就是窗口大小,outer当然代表了整个浏览器最外层的大小,而inner则代表了真是显示内容的区域

即视口,就是我们看到的浏览器内容窗口大小,这个与document.doucumentElement.clientWidth,document.doucumentElement.clientHeigth相对应也就是所谓的视口大小,视口大小可能随时变化,而在移动

端document.body.clientWidth,document.body.clientHeigth才代表真正渲染后的视口大小,而document.doucumentElement.clientWidth,document.doucumentElement.clientHeigth代表布局大小;

5 导航

window.open:打开新的页面,这个页面可能被浏览器阻止,导致返回值为null

6 setTimeout,setInterval

2个老朋友了就不多说了

7 系统对话框

aler:

confirm,prompt:基本废物一个

8 location对象

即浏览器地址栏对象,这个对象具有url多个分解后的属性,如host

9 navigator对象

用途呢:主要用来检测浏览器插件和浏览器的属性介绍,或者浏览器订阅rss这类的,很少使用

10 history和screen对象

history:go(-1);go(1)很简单不多说了

screen对象几乎没人使用咯

重操JS旧业第十一弹:BOM对象的更多相关文章

  1. 重操JS旧业第七弹:面向对象与对象创建

    JS是一种完全面向对象的程序设计语言,在面向对象处理方面,具有多种多样的实现方式,加之对象成员的动态性使得这门语言更加灵活:而js对象成员动态性也是创建和扩展对象的有力方式. 1 对象成员动态性 属性 ...

  2. 重操JS旧业第十弹:闭包

    闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...

  3. 重操JS旧业第八弹:面向对象与继承

    js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...

  4. 重操JS旧业第六弹:基本类型包装

    在前面已经知道js中的类型有boolean,string,number,undefined,function,object,其中boolean,number,string为值类型.所谓的基本类型包装, ...

  5. 重操JS旧业第五弹:函数

    函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function 1 申明与定义 显示声明:function cc(){};函数名其实是函数的一个指针,函数名某 ...

  6. 重操JS旧业第四弹:Date与Global对象

    1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...

  7. 重操JS旧业第三弹:Array

    数组在任何编程语言中都是非常重要的,因为函数在最大程度上代表了要实现的功能,而数组则是这些函数所要操作的内存一部分. 1 构建数组 js与其他非脚本语言的灵活之处在于要实现一个目标它可能具有多种方式, ...

  8. 重操JS旧业第九弹:函数表达式

    函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...

  9. 重操JS旧业第二弹:数据类型与类型转换

    一 数据类型 1 js中的数据类型 1.1 数据类型列举 1)number类型 2)boolean类型 3)string类型 4)对象类型 5)函数类型 6)undefined类型 1.2 数据类型获 ...

随机推荐

  1. 包子IT面试培训

    包子IT面试培训 IT 面试不再怕,包子帮你圆个梦!

  2. ThinkPHP - 关联模型 - 一对多

    使用之前,先引入文件夹,否则相应的功能不能实现. 如果对thinkPHP不精通,使用或开发的时候,最好直接使用完成版本的ThinkPHP. 关系模型定义: <?php /** * 继承自 Rel ...

  3. (Problem 3)Largest prime factor

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  4. Android HttpClient HttpURLConnection相关介绍

    Android HttpClient HttpURLConnection相关介绍 遇到一个问题 在android studio上用HttpClient编写网络访问代码的时候,发现该类无法导入并使用.. ...

  5. 基于Sql Server 2008的分布式数据库的实践(五)

    原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...

  6. Cannot drop the database ‘XXX’ because it is being used for replication.

    删除订阅数据库的时候出现下面的错误: Cannot drop the database ‘XXX’  because it is being used for replication. 数据库的状态为 ...

  7. inheritAll 及 ant antfile案例分析

    <?xml version="1.0"?> <project name="a" default="targeta"> ...

  8. Android NumberPicker和DatePicker分割线颜色设置

    NumberPicker /** * * 设置选择器的分割线颜色 * * @param numberPicker */ private void setDatePickerDividerColor(N ...

  9. 如何解决office2007每次打开都要正在配置

    前言 最近发现我的office2007每次打开的时候都要配置,超级烦人,而且还要等待很久,具体状况如下图: [caption id="attachment_1241" align= ...

  10. Robot Framework: 自定义自己的python库

    利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...