一、什么是BOM

1. BOM是browser object model的缩写,简称浏览器对象模型;

2. BOM提供了独立于内容而与浏览器窗口进行交互的对象,描述了与浏览器进行交互的方法和接口;

3. 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;

4. BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;

5. BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C;

6. BOM最初是Netscape浏览器标准的一部分;

二 BOM概览

  1)可以移动,调整浏览器大小的window对象,可以用于导航的location对象与history对象,可以获取浏览器,操作系统与用户屏幕信息的navigator与screen对象,可以使用document作为访问HTML文档的入口,管理框架的frames对象等;
  2)window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象;
  3)由于window是顶层对象,因此调用它的子对象时可以不显示的指明window对象;

三、window对象-- window对象是BOM中所有对象的核心

  • window,中文"窗口";
  • window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数;

3.1 全局的window对象

    JavaScript中的任何一个全局函数或变量都是window的属性
   例如:
  1. var age= 29;
  2. function sayAge(){
  3. alert(this.age);(由于sayAge存在于全局作用域,this.age被影射到window.age)
  4. }
  5. alert(window.age);//
  6. sayAge();//
  7. window.sayAge();//
  但是定义全局变量和在window上定义变量还是有一点差别
  • 全局变量不能通过delete操作符删除;
  • window对象上定义的属性可以删除;
  1. var age= 29;
  2. window.color = "red";
  3. delete window.age;//false,通过chrome和ff运行都没有报错
  4. delete window.color;//true

3.2 window与self对象

  self对象与window对象完全相同,self通常用于确认就是在当前的窗体内。

3.3 window的子对象

window的常见子对象包括:

(1)document对象

(2)frames 对象: HTML页面当前窗体的中的框架集合

(3)history 对象

(4)location 对象

(5)navigator 对象

(6)screen 对象

3.4 window函数

(1)窗体控制函数(下面四个函数不适用于框架,只能对最外层的window对象使用)

  • moveBy() 函数
      moveBy(x,y) 从当前位置水平移动窗体x个像素,垂直移动窗体y个像素,x为负数,将向左移动窗体,y为负数,将向上移动窗体
  • moveTo() 函数
      moveTo(x,y)移动窗体左上角到相对于屏幕左上角的(x,y)点,当使用负数做为参数时会把窗体移出屏幕的可视区域
  • resizeBy() 函数
      resizeBy(w,h) 相对窗体当前的大小,宽度调整w个像素,高度调整h个像素。如果参数为负值,将缩小窗体,反之扩大窗体
  • resizeTo() 函数
     resizeTo(w,h) 把窗体宽度调整为w个像素,高度调整为h个像素
 
(2)新建窗体函数

  • open() 函数-- 打开(弹出)一个新的窗体

  window.open(url, name, features, replace)

    url -- 要载入窗体的URL
    name -- 新建窗体的名称(也可以是HTML target属性的取值,目标)
    features -- 代表窗体特性的字符串,字符串中每个特性使用逗号分隔
    replace -- 一个布尔值,说明新载入的页面是否替换当前载入的页面,此参数通常不用指定
 
参数名称 类型 说明
height Number 设置窗体的高度,不能小于100
left Number 说明创建窗体的左坐标,不能为负值
location Boolean 窗体是否显示地址栏,默认值为no
resizable Boolean 窗体是否允许通过拖动边线调整大小,默认值为no
scrollable Boolean 窗体中内部超出窗口可视范围时是否允许拖动,默认值为no
toolbar Boolean 窗体是否显示工具栏,默认值为no
top Number 说明创建窗体的上坐标,不能为负值
status Boolean 窗体是否显示状态栏,默认值为no
width Number 创建窗体的宽度,不能小于100

(3)关闭窗口函数close()

  所有的窗体都可以使用此函数关闭;

  对于通过使用open函数打开的窗体,使用close函数将直接关闭;

  非open打开的窗体,或者对整个浏览器调用close函数时将弹出一条关闭信息,询问是否关闭。用户可以拒绝关闭。

3.5 opener 属性

     opener对象保存着打开它的原始窗口对象,这个属性只在弹出窗口的最外层window对象(top)中有定义,而且指向调用window.open()的窗口或框架。
  1. var wroxWin = window.open("http://chinaso.com","wroxWindow","height=400,width=300");
  2. alert(wroxWin.opener==window);//true
  3. 当把wroxWin.opener==null;时,就是告诉浏览器创建新的标签页不需要与打开它的标签页通信

3.6 对话框函数

  • alert() 函数:弹出消息对话框(对话框中有一个OK按钮)
  • confirm() 函数:弹出消息对话框(对话框中包含一个OK按钮与Cancel按钮)
  • prompt() 函数:弹出消息对话框(对话框中包含一个OK按钮、Cancel按钮与一个文本输入框)

  prompt() 函数接收两个参数,要显示给用户的文本提示和文本输入域的默认值(可以是一个空字符串)

3.7 时间等待与间隔函数

(1)setTimeout() 函数

  1. setTimeout(codes, interval);

参数:

  codes:代码段的字符串表示(与eval函数的参数相同),或者是匿名函数、函数名;

  interval :等待的毫秒数(通常用于产生动画效果);

  setTimeout函数的ID标识:每次调用setTimeout函数都会产生一个唯一的ID,可以通过clearTimeout函数(此函数的参数接收一个setTimeout返回的ID)暂停setTimeout函数还未执行的代码。

(2)clearTimeout() 函数

(3)setInterval() 函数:间隔指定的毫秒数不停地执行指定的代码

  setInterval(codes, interval)

 
  setInterval函数的ID标识,每次调用setInterval函数都会产生一个唯一的ID,可以通过clearInterval函数(此函数的参 数接收一个setInterval返回的ID)取消setInterval函数

(4)clearInterval() 函数

  常用的使用间歇调用的例子:
  1. var num=0;
  2. var max=10;
  3. var intervalId = null;
  4. function incrementNumber(){
  5. num++;
  6. if (num==max){
  7. clearInterval( intervalId) ;
  8. alert(Done);
  9. }
  10. }
  11. intervalId = setInterval(incrementNumber,500);
  使用超时来实现:
  1. var num=0;
  2. var max=10;
  3. function incrementNumber(){
  4. num++;
  5. if(num<max){
  6. setTimeout(incrementNumber,500);
  7. }else{
  8. alert("Done");
  9. }
  10. setTimeout(incrementNumber,500);
   在使用超时调用时,没有必要跟踪超时调用id,所以用超时调用来模拟间歇调用是最好的。

四、frames 对象

   frames用于表现HTML页面当前窗体的中的框架集合
框架集引用中使用的对象
window 当前框架
top 最顶层的框架,就是浏览器窗体
parent 包含当前框架的父框架
self 当前框架,总是等于window对象

五、document 对象

   document用于表现HTML页面当前窗体的内容。
  • document是BOM中最重要对象之一
  • document对象是window对象的属性
  • document对象包含一个节点对象,此对象包含每个单独页面的所有HTML元素,这就是W3C的DOM对象
  • 这个对象的独特之处是唯一一个既属于BOM又属于DOM的对象

5.1 document属性

  • cookie -- 用户cookie
  • title -- 当前页面title标签中定义的文字
  • URL -- 当前页面的URL
  • anchors -- 文档中所有锚(a name="aname")的集合
  • applets -- 文档中所有applet标签表示的内容的集合
  • embeds -- 文档中所有embed标签表示的内容的集合
  • forms -- 文档中所有form标签表示的内容的集合
  • images -- 文档中所有image标签表示的内容的集合
  • links -- 文档中所有a(链接)标签表示的内容的集合

5.2 document函数

  • write() 函数-- 在文档中写入字符串
  • writeln() 函数-- 在文档中写入字符串,并在字符串的末尾增加一个换行符
  • document.open() 函数--  打开已经载入的文档
  1. var win = window.open("about:blank","dreamdu");//新建一个空白文档
  2. win.document.open();打开文档
  3. win.document.write("welcome to dreamdu!");
  4. win.document.close();
  • document.close() 函数

六、location 对象

location用于获取或设置窗体的URL,并且可以用于解析URL,是BOM中最重要的对象之一。
  • location,中文"位置"
  • location既是window对象的属性又是document对象的属性
  • location包含8个属性,其中7个都是当前窗体的URL的一部分,剩下的也是最重要的一个是href属性,代表当前窗体的URL
  • location的8个属性都是可读写的,但是只有href与hash的写才有意义。例如改变location.href会重新定位到一个URL,而修改location.hash会跳到当前页面中的anchor(<a id="name">或者<div id="id">等)名字的标记(如果有),而且页面不会被重新加载

6.1 location属性

  • hash 属性 -- 返回URL中#符号后面的内容
  • host 属性 -- 返回域名
  • hostname 属性 -- 返回主域名
  • href 属性 -- 返回当前文档的完整URL或设置当前文档的URL
  • pathname 属性 -- 返回URL中域名后的部分
  • port 属性 -- 返回URL中的端口
  • protocol 属性 -- 返回URL中的协议
  • search 属性 -- 返回URL中的查询字符串
  • assign() 函数 -- 改变浏览器的位置
  1. location.assign("http://chinaso.com");
  2. window.location = "http://chinaso.com";
  3. location.href = "http://chinaso.com";
  • replace() 函数 -- 设置当前文档的URL,用户不能返回到前一个页面,并在浏览器的历史记录中不会生成新纪录
  • reload() 函数 -- 重新载入当前文档,如果页面自上次请求以来没有改变过,页面从浏览器缓存中重新加载;如果要强制从服务器加载,则reload(true);

七、navigator对象--通常用于检测浏览器与操作系统的版本、检测插件等

navigator没有统一的标准,因此各个浏览器都有自己不同的navigator版本,这里只介绍最普遍支持且最常用的navigator属性
  • appCodeName -- 浏览器的名称,通常都是Mozilla,即使在其他浏览器中也是
  • appName -- 完整的浏览器名称
  • appVersion -- 浏览器版本信息
  • cookieEnabled -- 如果启用cookie返回true,否则返回false
  • javaEnabled -- 如果启用java返回true,否则返回false
  • platform -- 浏览器所在的系统平台
  • plugins -- 安装在浏览器中的插件数组
  • taintEnabled -- 如果启用了数据污点返回true,否则返回false
  • userAgent -- 浏览器的用户代理字符串

八、history对象

  • 浏览者通常可以使用浏览器的前进与后退按钮访问曾经浏览过的页面。JavaScript的history对象记录了用户曾经浏览过的页面,并可以实现浏览器前进与后退相似的导航功能
  • 可以通过back函数后退一个页面,forward函数前进一个页面,或者使用go函数任意后退或前进页面,还可以通过length属性查看history对象中存储的页面数
  1. history.go(-1);//后退一页
  2. history.go(1);//前进一页
  3. history.go(”chinaso.com“);//前进一页

九、screen对象

screen对象用于获取用户的屏幕信息,在编程中用处不大

小白科普之JavaScript的BOM模型的更多相关文章

  1. 小白科普之JavaScript的DOM模型

    微信公众号“前端大全”推送了一篇名为“通俗易懂的来讲讲DOM”的文章,把javascript原生DOM相关内容讲解的很详细.仔细读了一遍,觉得整理总结的不错,对自己也很使用,所以把内容整理过来,并根据 ...

  2. 小白科普之JavaScript的函数

    一 概述 1.1 函数声明 (1)function命令 函数就是使用function命令命名的代码区块,便于反复调用.这种声明方式叫做函数的声明(Function Declaration). func ...

  3. 小白科普之JavaScript的JSON

    一.对json的理解     json是一种数据格式,不是一种编程语言,json并不从属于javascript.     json的语法可以表示以下三种类型的值     1)简单值           ...

  4. 小白科普之JavaScript的数组

    一.与其他语言数据的比较    相同点:有序列表    不同点:js的数组的每一项可以保存任何类型的数据:数组的大小是可以动态调整的 二.数组创建的两种方法 1)  var colors = new ...

  5. JavaScript---网络编程(6)-Dom和Bom模型概念讲解(节点获取,window对象)

    本节讲Dom和Bom模型概念讲解(节点获取,window对象). out.js: 写了2个输出到页面的函数. function println(param){ document.write(param ...

  6. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退

    今天上午学了的BOM模型中常用对象,了解了一部分的属性 For循环的规律 外层循环控制行 内层循环控制列 <!doctype html> <html> <head> ...

  7. JavaScript的BOM和DOM

    JavaScript的BOM和DOM 1,window对象,所有浏览器都支持window对象,它表示浏览器窗口 BOM(browser Object Model)是指浏览器对象模型,它使JavaScr ...

  8. [JavaScript之BOM与DOM]

    [JavaScript之BOM与DOM] BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM ( ...

  9. Java Script基础(四) BOM模型

    一.BOM模型 BOM模型(Browser Object Model),也称为文档对象模型,它包含浏览器相关的属性和方法,例如操作,前进后退按钮,控制地址栏,关闭浏览器窗口,打开新窗口等等.它包含的对 ...

随机推荐

  1. C#基础之枚举

    1.认识Enum 以前一直以为Enum是值类型,在VS中查看Enum的定义时才发现它是一个抽象的类.但是这个类很奇怪,Enum继承了ValueType这个很熟悉的值类型基类,它是唯一一个继承自Valu ...

  2. [转]Android Studio 快捷键整理分享

    Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码 ...

  3. [vijos1892]树上的最大匹配(树形DP)

    题目:https://vijos.org/p/1892 分析:(100分其实用到各种c++优化,没什么实际意义,所以弄70就可以了) 题目很简单,很容易想出用树形DP,但是求方案数的时候,满满都是细节 ...

  4. [bzoj 1503][NOI 2004]郁闷的出纳员(平衡树)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 分析: 经典的平衡树题,我用Treap做的 下面有几点注意的: 1.可能出现新加入的人的 ...

  5. java编程

    Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing ...

  6. oracle-1

    使用sqlplus 进入oracle (1)服务的启动终止 oracle 服务的关闭: SQL> shutdown immediate; oracle服务的启动: SQL> startup ...

  7. 【BZOJ 1001】狼抓兔子 对偶图+SPFA

    这道题是求图的最小割,也就是用最大流.但因为边太多,最大流算法会T,因此不能用最大流算法. 因为这是个平面图,所以求平面图的最小割可以使用特殊的技巧就是求对偶图然后求对偶图的最短路.把每个面看成一个点 ...

  8. Hibernate-一对多的关系维护

    一对多 和多对一 一般是看需求来确定的,很多时候都是设置成双向的 举个最最普通的离子 :一个班级里面有多个学生 多个学生属于一个班级 从学生表来看 就是多对一的关系 从班级表来看就是一对多的关系 需求 ...

  9. 21.Android之SQLite数据库学习

    Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...

  10. MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)

    为了做一个页面特效,导入了一个jQuery文件,怎想,myeclipse竟然报错说是语法错误,但是这个js文件我是从官网上下载的,不应该出错才对,百度谷歌之后终于找到了解决办法: 选中报错的js文件, ...