一、什么是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的属性
   例如:
var age= 29;
function sayAge(){
alert(this.age);(由于sayAge存在于全局作用域,this.age被影射到window.age)
}
alert(window.age);//
sayAge();//
window.sayAge();//
  但是定义全局变量和在window上定义变量还是有一点差别:
  • 全局变量不能通过delete操作符删除;
  • window对象上定义的属性可以删除;
var age= 29;
window.color = "red";
delete window.age;//false,通过chrome和ff运行都没有报错
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()的窗口或框架。
var wroxWin = window.open("http://chinaso.com","wroxWindow","height=400,width=300");
alert(wroxWin.opener==window);//true
当把wroxWin.opener==null;时,就是告诉浏览器创建新的标签页不需要与打开它的标签页通信

3.6 对话框函数

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

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

3.7 时间等待与间隔函数

(1)setTimeout() 函数

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() 函数

  常用的使用间歇调用的例子:
var num=0;
var max=10;
var intervalId = null;
function incrementNumber(){
num++;
if (num==max){
clearInterval( intervalId) ;
alert(Done);
}
}
intervalId = setInterval(incrementNumber,500);
  使用超时来实现:
var num=0;
var max=10;
function incrementNumber(){
num++;
if(num<max){
setTimeout(incrementNumber,500);
}else{
alert("Done");
}
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() 函数--  打开已经载入的文档
var win = window.open("about:blank","dreamdu");//新建一个空白文档
win.document.open();打开文档
win.document.write("welcome to dreamdu!");
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() 函数 -- 改变浏览器的位置
location.assign("http://chinaso.com");
window.location = "http://chinaso.com";
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对象中存储的页面数
history.go(-1);//后退一页
history.go(1);//前进一页
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. Web API 基于ASP.NET Identity的Basic Authentication

    今天给大家分享在Web API下,如何利用ASP.NET Identity实现基本认证(Basic Authentication),在博客园子搜索了一圈Web API的基本认证,基本都是做的Forms ...

  2. Bootstrap系列 -- 26. 下拉菜单标题

    Bootstrap下拉菜单中使用 dropdown-header 来显示菜单标题,和上一篇说道的分割线一样 <div class="dropdown"> <but ...

  3. Enum扩展及MVC中DropDownListFor扩展方法的使用

    public enum SearchState { /// <summary> /// 全部 /// </summary> [Description("全部" ...

  4. Ibatis对日期的处理

    最近在项目中出现两种情况(因为项目比较早,经历各个版本的改动,所有设计不一致),第一种:数据库中某一字段为Date类型,对应的bean中的类型为java.util.Date,所有在对应的映射中会出现字 ...

  5. HTML布局篇之双飞翼(圣杯)布局

    最近在写页面的时候,总是为布局头疼,倒不是不能布出来,就是感觉不系统,没有成一个体系的感觉.所以决定自己写博文,梳理一下思路. 常用的布局方式大致可以分为三种: 浮动布局 Float 负边距(双飞翼) ...

  6. 问问题_Java一次导出百万条数据生成excel(web操作)

    需求:在web页面操作,一次导出百万条数据并生成excel 分析: 1.异步生成Excel,非实时,完成后使用某种方式通知用户 2.生成多个excel文件,并打包成zip文件,因为一个excel容纳不 ...

  7. 虚拟机去混杂模式与 vlan in vxlan 特性

    1. 去混杂模式 1.1 背景 混杂模式(Promiscuous Mode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是它.是相对于通常模式(又称“非混杂模式”)而言的. 这被网络管 ...

  8. Js-字符转换数字

    s 字符串转化成数字 的 三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数, ...

  9. Oracle 调度程序(scheduler)摘自一位大神

    在11g中,Oracle提供了一个新建的Scheduler特性,帮助将作业实现自动化.它还可以帮助你控制资源的利用与并可以将数据库中的作业按优先顺序执行.传统的dbms_jobs的一个限制是它只能调度 ...

  10. BZOJ-2190 仪仗队 数论+欧拉函数(线性筛)

    今天zky学长讲数论,上午水,舒爽的不行..后来下午直接while(true){懵逼:}死循全程懵逼....(可怕)Thinking Bear. 2190: [SDOI2008]仪仗队 Time Li ...