javascript的BOM


Posted in Javascript onMay 03, 2016

javascript的BOM

            ECMAScript是 JavaScript的核心,但如果要在 Web中使用 JavaScript,那么 BOM(浏览器对象模型)则无疑才是真正的核心。BOM 提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。多年来,缺少事实上的规范导致 BOM既有意思又有问题,因为浏览器提供商会按照各自的想法随意去扩展它。于是,浏览器之间共有的对象就成为了事实上的标准。这些对象在浏览器中得以存在,很大程度上是由于它们提供了与浏览器的互操作性。W3C为了把浏览器中 JavaScript最基本的部分标准化,已经将 BOM的主要方面纳入了 HTML5的规范中。

            ps:上面摘抄于《javascript高级程序设计》,BOM是浏览器的窗口对象,提供了很多窗口处理的API。在webapp框架越来越多的情况下,需要我们在同一窗口处理不同页面、不同的ajax数据,则需要我们熟悉BOM的内容。

1、window

        BOM 的核心对象是 window ,它表示浏览器的一个实例。在浏览器中, window 对象有双重角色,它既是通过 JavaScript 访问浏览器窗口的一个接口,又是 ECMAScript 规定的 Global 对象。

javascript的BOM

javascript的BOM

下面是open的第三个字符串属性

javascript的BOM

2、location

        location 是最有用的 BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。事实上, location 对象是很特别的一个对象,因为它既是 window 对象的属性,也是document 对象的属性;换句话说, window.location 和 document.location 引用的是同一个对象。location 对象的用处不只表现在它保存着当前文档的信息,还表现在它将 URL 解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。

javascript的BOM

3、history

        history 对象保存着用户上网的历史记录, 从窗口被打开的那一刻算起。 因为 history 是 window对象的属性,因此每个浏览器窗口、每个标签页乃至每个框架,都有自己的 history 对象与特定的window 对象关联。出于安全方面的考虑,开发人员无法得知用户浏览过的 URL。不过,借由用户访问过的页面列表,同样可以在不知道实际 URL 的情况下实现后退和前进。

javascript的BOM

4、navigator

        最早由 Netscape Navigator 2.0引入的 navigator 对象,现在已经成为识别客户端浏览器的事实标准。虽然其他浏览器也通过其他方式提供了相同或相似的信息(例如,IE 中的 window.clientInfor-mation 和 Opera 中的 indow.opera ) ,但 navigator 对象却是所有支持 JavaScript 的浏览器所共有的。与其他 BOM 对象的情况一样,每个浏览器中的 navigator 对象也都有一套自己的属性。下图有navigator比较重要的信息

javascript的BOM

5、screen

        JavaScript 中有几个对象在编程中用处不大,而 screen 对象就是其中之一。 screen 对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器中的 screen 对象都包含着各不相同的属性,下表列出了所有属性及支持相应属性的浏览器。直接用下面代码查看下就行了

<!DOCTYPE html>
<html>
<head>
<script>
  console.log(screen);
</script>
</head>
<body>
  screen
</body>
</html>
Javascript 相关文章推荐
js函数的延迟加载实现代码
Oct 11 Javascript
React.js入门学习第一篇
Mar 30 Javascript
Three.js学习之几何形状
Aug 01 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
js 颜色选择插件
Jan 23 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
Dec 18 Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
vue.js的简单自动求和计算实例
Nov 08 Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 #Javascript
深入浅析Bootstrap列表组组件
May 03 #Javascript
前端jquery部分很精彩
May 03 #Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 #Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 #Javascript
搞定immutable.js详细说明
May 02 #Javascript
Immutable 在 JavaScript 中的应用
May 02 #Javascript
You might like
PHP中对数据库操作的封装
2006/10/09 PHP
php中的数组操作函数整理
2008/08/18 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Python执行时间的几种计算方法
2020/07/31 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
大学校园生活自我鉴定
2014/01/13 职场文书
租房协议书范文
2014/08/20 职场文书
党委班子剖析材料
2014/08/21 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL
nginx rewrite功能使用场景分析
2022/05/30 Servers
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers