重操JS旧业第十一弹:BOM对象
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对象的更多相关文章
- 重操JS旧业第七弹:面向对象与对象创建
JS是一种完全面向对象的程序设计语言,在面向对象处理方面,具有多种多样的实现方式,加之对象成员的动态性使得这门语言更加灵活:而js对象成员动态性也是创建和扩展对象的有力方式. 1 对象成员动态性 属性 ...
- 重操JS旧业第十弹:闭包
闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...
- 重操JS旧业第八弹:面向对象与继承
js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...
- 重操JS旧业第六弹:基本类型包装
在前面已经知道js中的类型有boolean,string,number,undefined,function,object,其中boolean,number,string为值类型.所谓的基本类型包装, ...
- 重操JS旧业第五弹:函数
函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function 1 申明与定义 显示声明:function cc(){};函数名其实是函数的一个指针,函数名某 ...
- 重操JS旧业第四弹:Date与Global对象
1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...
- 重操JS旧业第三弹:Array
数组在任何编程语言中都是非常重要的,因为函数在最大程度上代表了要实现的功能,而数组则是这些函数所要操作的内存一部分. 1 构建数组 js与其他非脚本语言的灵活之处在于要实现一个目标它可能具有多种方式, ...
- 重操JS旧业第九弹:函数表达式
函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...
- 重操JS旧业第二弹:数据类型与类型转换
一 数据类型 1 js中的数据类型 1.1 数据类型列举 1)number类型 2)boolean类型 3)string类型 4)对象类型 5)函数类型 6)undefined类型 1.2 数据类型获 ...
随机推荐
- hpuoj回文串问题(manacher+kmp)
1699: 回文串问题 时间限制: 1 Sec 内存限制: 128 MB 提交: 22 解决: 3 [提交][状态][讨论版] 题目描述 还是回文串问题,字符串是啥,大家应该都知道,就是满足 S[ ...
- 【第三方SDK】百度地图实现最简单的定位功能(无地图界面)
在近期的项目中,须要实现无地图界面的定位功能,定位用户所在的城市.因此,本篇文章,主要介绍怎样使用百度地图SDK实现无导航界面的定位功能. 1.申请百度开发人员账户 2.创建应用,获取key 例如以下 ...
- VMware-Workstation安装在ubuntu15.04(内核3.19)
安装的最新版的linux15.04 安装VMware-Workstation11,运行gui程序的时候出现,VMware Kernel Module Update的提示窗口, 说是要更新vmnet-d ...
- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
在使用VS2010编写运行时动态链接dll文件时出现的一个问题,问题解决得益于此文章: http://blog.sina.com.cn/s/blog_6a2236590100xbgl.html 通过调 ...
- Easyui datagrid 批量编辑和提交
<script type="text/javascript"> $(function() { var $dg = $("#dg"); $dg.dat ...
- 【集训笔记】动态规划【HDOJ1159【HDOJ1003
终于开始DP了] HDOJ_1159 Common Subsequence 题目链接 Sample Input abcfbc abfcab programming contest abcd mnp ...
- Automake创建项目
autoconf和automake可以方便的构建linux下项目,一个简单的automake项目实例,麻雀虽小五脏俱全,以后无外乎在这基础上扩展相应的宏完善而已. .首先建立项目目录树 )创建目录树 ...
- Android动态加载jar、apk的实现
前段时间到阿里巴巴参加支付宝技术分享沙龙,看到支付宝在Android使用插件化的技术,挺好奇的.正好这几天看到了农民伯伯的相关文章,因此简单整理了下,有什么错误希望大神指正. 核心类 1.1 ...
- Fruit Ninja(树状数组+思维)
Fruit Ninja Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- SVProgressHUD的使用
GitHub:https://github.com/samvermette/SVProgressHUD SVProgressHUD和MBProgressHUD效果差点儿相同,只是不须要使用协议,同一时 ...