浏览器对象模型 BOM

BOM( Brower Object Model,浏览器对象模型 ),用于管理窗口及窗口间的通讯,其核心对象是 window。


window 是 BOM 的核心对象,表示浏览器的一个实例。称其窗口,可能并不准确,因为,浏览器窗口可能包含多个标签页,每个标签页都有 window对象。同时,window 对象又具有双重角色:

它既是通过 JS 访问浏览器的一个接口,又是 ES 规定的 global (全局)对象 ?!

同时,BOM 也提供了很多其他对象,用于访问浏览器的功能(这些功能与任何网页内容无关)


window 浏览器窗口(大小位置、开关、对话框

[1] 窗口大小(获取、调整)

[1-1] 获取

  • outerWidth 和 outerHeight:用于表示浏览器窗口本身的尺寸,但IE8-浏览器不支持。

  • innerWidth 和 innerHeight:表示页面大小,即浏览器窗口尺寸减去浏览器边框及菜单、地址栏等的宽高。


[1-2] 调整

resizeTo()和resizeBy()方法:可以用来调整浏览器窗口的大小,但只有IE和safari浏览器支持。

  • resizeTo()接收两个参数:浏览器窗口的新宽度和新高度。

  • resizeBy()接收两个参数:浏览器新窗口与原窗口的宽度和高度之差。


[2] 窗口位置(获取、移动)

screenLeft、screenTop、screenX 和 screenY 都是只读属性,修改他们的值,并不会使得窗口发生移动。

  • screenLeft 和 screenTop 属性:分别表示窗口相对于屏幕左边和上边的位置。

  • screenX 和 screenY 属性:IE8-,也提供相同的窗口位置信息


[2-1] 获取(兼容写法):由于各浏览器的实现不同,无法在跨浏览器条件下取得精确坐标值。


[2-2] 移动:moveTo() 和 moveBy() 方法,可以将窗口精确移动到一个新位置,但只有IE浏览器支持。

  • moveTo() 接收两个参数,分别是新位置的x和y坐标值

  • moveBy() 接收两个参数,分别是水平和垂直方向上移动像素数


[3] 窗口操作(打开、关闭)

[3-1] 打开窗口:window.open()方法,可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。

该方法接收4个参数:

要加载的URL、窗口目标、一个特性字符串及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。

[ 参数 ]       // 通常只需要传递第一个参数,默认在新窗口打开

  • 第 2 个参数表示已有窗口或者框架的名称,或者是_self、_parent、_top、_blank等窗口打开方式。
  • 第 3 个参数是一个逗号分隔的设置字符串,表示在新窗口中都显示哪些特性。

  • 第 4 个参数是一个布尔值,只在第二个参数命名的是一个存在的窗口时才有用。


[ 返回值 ]  新窗口的Window对象;且新创建的window对象有一个opener属性,保存着打开它的原始窗口对象。

[ 过滤 ]  大部分浏览器都有弹出窗口过滤系统。通常,open()方法只有当用户手动单击按钮或者链接的时候才会调用。JS 代码尝试在浏览器初始载入时开启一个弹出窗口时,通常会失败。如果被拦截,则返回值是undefined。


[3-2] 关闭窗口:就像方法 open() 打开一个新窗口一样,方法 close() 将关闭一个窗口。

新窗口的对象w还有一个closed属性,用于检测是否被关闭。


[ 小应用 ]  通过window.open()返回的对象可以操作新打开窗口的开闭。


[4] 系统对话框:浏览器可以通过 alert()、confirm() 和 prom() 等方法形成系统对话框,向用户显示信息。

// 系统对话框的外观由操作系统或浏览器设置决定,与 CSS 无关;对话框显示时,代码停止执行。

[ 警告框 ] alert()方法:接受一个字符串,并显示给用户;

[ 确认框 ] confirm()方法:接受一个字符串,并显示两个按钮:确定(返回值:true) / 取消(返回值:false);

[ 提示框 ] prompt()方法:用于提示用户输入一些文本。


另,“查找”和“打印”,两个对话框可以通过 JS 打开,与用户通过浏览器菜单打开的对话框相同。