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. VC++网络高级编程

    内含<VC网络高级编程>电子书 及源代码. 第一章.TCP/IP协议.第二章.Winsock网络编程接口:第二章.Visual C++与网络编程:第四章.基本网络编程技术:第五章.Teln ...

  2. X Window System介绍

    1.概述     X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是执行在UNIX系统上的视窗系统.严格地说,X Window System并非一个软件, ...

  3. Codeforces 360C Levko and Strings dp

    题目链接:点击打开链接 题意: 给定长度为n的字符串s,常数k 显然s的子串一共同拥有 n(n-1)/2 个 要求找到一个长度为n的字符串t,使得t相应位置的k个子串字典序>s #include ...

  4. window下如何搭建linux环境

    1.使用虚拟机 使用VMware虚拟机,下载linux内核系统,加载运行. 2.cygwin 安装cygwin,设置环境变量. 第二种方法还是比较简便的.优先考虑.

  5. [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)

    题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535   SWUST国的一支科学 ...

  6. BZOJ 2718: [Violet 4]毕业旅行( 最长反链 )

    一不小心速度就成了#1.... 这道题显然是求最长反链, 最长反链=最小链覆盖.最小链覆盖就是先做一次floyd传递闭包, 再求最小路径覆盖. 最小路径覆盖=N - 二分图最大匹配. 所以把所有点拆成 ...

  7. HDU 3974 Assign the task 简单搜索

    根据Rex 的思路才知道可以这么写. 题目意思还是很好理解的,就是找到当前雇员最近的任务. 做法是,可以开辟一个 tim 变量,每次有雇员得到昕任务时候 ++tim 然后取寻找最近的任务的时候写一个搜 ...

  8. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  9. ASP.NET MVC 5 学习教程:添加视图

    原文 ASP.NET MVC 5 学习教程:添加视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...

  10. polling轮询和comet

    comet:(原意:彗星) Comet is a web application model in which a long-held(held:保留) HTTP request allows a w ...