一.window对象
BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器浏览器窗口的一个接口,又是ECMAScript规定的
Global对象。这意味着在网页定义的任何一个对象、变量和函数,都以window作为其Global对象,因此有权访问parseInt()等方法。
1.全局作用域
在全局作用域声明的变量、函数都会变成window对象的属性和方法
var age = 29;
function sayAge(){
alert(this.age);
}
alert(window.age); //29
sayAge(); //29
window.sayAge(); //29;
定义全局变量与在window对象上直接定义属性有一点差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性可以。
var age = 29;
window.color = "red";
//在IE < 9时抛出错误,在其他所有浏览器中都返回false
delete window.age;
//在IE < 9时抛出错误,在其他所有浏览器中都返回true
delete window.color; // return true
alert(window.age); // 29
alert(window.color); // undefined
尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。
//这里抛出错误,因为oldValue未定义
var newValue = oldValue;
//这里不会抛出错误,因为这是一次属性查询
//newValule的值是undefined
var newValue = window.oldValue;
2.窗口关系及框架
如果页面包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)或者框架名称
来访问相应的window对象。每个window对象都有一个name属性,其中包含框架名称。
window.frames[0]
window.frames["topFrame"]
top.frames[0] //top始终指向最高(外)层的框架
top.frames["topFrame"]
parent对象始终指向当前框架的直接上层框架
self对象,始终指向window
3.窗口位置
var leftPos = (typeof window.screenLeft == "number") ?
window.screenLeft : window.screenX;
var rightPos = (typeof window.screenTop == "number") ?
window.screenTop : window.screenY;
移动位置
//将窗口移动到屏幕左上角
window.moveTo(0, 0);
//将窗口向下移动100像素
window.moveBy(0, 100);
//将窗口移动到(200, 300);
window.moveTo(200, 300);
//将窗口向左移50像素
window.moveBy(-50, 0);
4.窗口大小
window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指去除菜单栏、工具栏、边框等占位元素后,
用于显示网页的净宽高
alert("window inner size: " + window.innerWidth + "x" + window.innerHeight);
5.导航和打开窗口
window.open()方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。这个方法可以接受4个参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新
页面是否取代浏览器历史记录中当前加载页面的布尔值。
6.间接调用和超时调用
间接调用:setTimeout()
//不建议传递字符串!
setTimeout("alert('hello world!')", 1000);
//推荐的调用方式
setTimeout(function(){
alert("Hello world!");
}, 1000);
间歇调用:setInterval()
//不建议传递字符串!
setInterval("alert('hello world!')", 1000);
//推荐的调用方式
setInterval(function(){
alert("Hello world!");
}, 1000);
可用setTimeout代替setInterval
7.系统对话框
alert、confirm、prompt
二.location对象
location对象表示当期页面的URL信息。例如,一个完整的URL:
http://www.example.com:8080/path/index.html?a=1&b=2#TOP
可以用location.href获取。要获得URL各个部分的值,可以这么写:
location.protocol; // "http"
location.host; // "www.example.com"
location.port; // "8080"
location.pathname; // "/path/index.html"
location.search; // "?a=1&b=2"
location.hash; // "TOP"
要加载一个新页面,可以调用location.assign()。如果要重新加载当前页面,调用location.reload()方法非常方便
if (confirm('重新加载当前页' + location.href + '?')) {
location.reload();
} else {
location.assign('/discuss'); // 设置一个新的URL地址
}
三.navigator对象
navigator对象表示浏览器的信息,最常用的属性包括:
navigator.appName:浏览器名称
navigator.appVersion:浏览器版本
navigator.language:浏览器设置的语言
navigator.platform:操作系统类型
navigator.userAgent:浏览器设定的User-Agent字符串
四.screent对象
用来表示客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。用的少
五.history对象
history对象保存了浏览器的历史记录,JavaScript可以调用history对象的back()或forward (),相当于用户点击了浏览器的“后退”或“前进”按钮。
这个对象属于历史遗留对象,对于现代Web页面来说,由于大量使用AJAX和页面交互,简单粗暴地调用history.back()可能会让用户感到非常愤怒。
新手开始设计Web页面时喜欢在登录页登录成功时调用history.back(),试图回到登录前的页面。这是一种错误的方法。
任何情况,你都不应该使用history这个对象了。
六.总结
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时,window对象还是javascript中的Global对象,因而所有全局变量和函数也都存在于它的
命名空间下。BOM的组成部分
在使用框架时,每个框架都有自己的window对象以及所有原生构造函数及其他函数的副本
有一些窗口指针,可以用来引用其他框架,包括父框架
top对象始终指向最外围的框架,也就是整个浏览器窗口
parent对象表示包含当前框架的框架,而self对象则回指window
使用location对象可以通过编程方式来访问浏览器的导航系统。设置相应的属性,可以逐段或整体性地修改浏览器的URL
调用replace()方法可以导航到一个新URL,同时该URL会替换浏览器历史记录中当前显示的页面
navigator对象提供了与浏览器相关的信息。到底提供哪些信息,很大程度上取决于用户的浏览器。不过,也有一些公共的属性(如userAgent)存在于所有浏览器中
Bom还有两个对象:screen和history,但它们的功能有限。screent对象中保存着与客户端显示器相关的信息,这些信息一般只用于站点分析。history对象为访问浏览器的历史
记录打开了一个小缝隙,开发人员可以根据此判断历史记录的数量,也可以从历史记录中向后或向前导航到任意页面
BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器浏览器窗口的一个接口,又是ECMAScript规定的
Global对象。这意味着在网页定义的任何一个对象、变量和函数,都以window作为其Global对象,因此有权访问parseInt()等方法。
1.全局作用域
在全局作用域声明的变量、函数都会变成window对象的属性和方法
var age = 29;
function sayAge(){
alert(this.age);
}
alert(window.age); //29
sayAge(); //29
window.sayAge(); //29;
定义全局变量与在window对象上直接定义属性有一点差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性可以。
var age = 29;
window.color = "red";
//在IE < 9时抛出错误,在其他所有浏览器中都返回false
delete window.age;
//在IE < 9时抛出错误,在其他所有浏览器中都返回true
delete window.color; // return true
alert(window.age); // 29
alert(window.color); // undefined
尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。
//这里抛出错误,因为oldValue未定义
var newValue = oldValue;
//这里不会抛出错误,因为这是一次属性查询
//newValule的值是undefined
var newValue = window.oldValue;
2.窗口关系及框架
如果页面包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)或者框架名称
来访问相应的window对象。每个window对象都有一个name属性,其中包含框架名称。
window.frames[0]
window.frames["topFrame"]
top.frames[0] //top始终指向最高(外)层的框架
top.frames["topFrame"]
parent对象始终指向当前框架的直接上层框架
self对象,始终指向window
3.窗口位置
var leftPos = (typeof window.screenLeft == "number") ?
window.screenLeft : window.screenX;
var rightPos = (typeof window.screenTop == "number") ?
window.screenTop : window.screenY;
移动位置
//将窗口移动到屏幕左上角
window.moveTo(0, 0);
//将窗口向下移动100像素
window.moveBy(0, 100);
//将窗口移动到(200, 300);
window.moveTo(200, 300);
//将窗口向左移50像素
window.moveBy(-50, 0);
4.窗口大小
window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指去除菜单栏、工具栏、边框等占位元素后,
用于显示网页的净宽高
alert("window inner size: " + window.innerWidth + "x" + window.innerHeight);
5.导航和打开窗口
window.open()方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。这个方法可以接受4个参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新
页面是否取代浏览器历史记录中当前加载页面的布尔值。
6.间接调用和超时调用
间接调用:setTimeout()
//不建议传递字符串!
setTimeout("alert('hello world!')", 1000);
//推荐的调用方式
setTimeout(function(){
alert("Hello world!");
}, 1000);
间歇调用:setInterval()
//不建议传递字符串!
setInterval("alert('hello world!')", 1000);
//推荐的调用方式
setInterval(function(){
alert("Hello world!");
}, 1000);
可用setTimeout代替setInterval
7.系统对话框
alert、confirm、prompt
二.location对象
location对象表示当期页面的URL信息。例如,一个完整的URL:
http://www.example.com:8080/path/index.html?a=1&b=2#TOP
可以用location.href获取。要获得URL各个部分的值,可以这么写:
location.protocol; // "http"
location.host; // "www.example.com"
location.port; // "8080"
location.pathname; // "/path/index.html"
location.search; // "?a=1&b=2"
location.hash; // "TOP"
要加载一个新页面,可以调用location.assign()。如果要重新加载当前页面,调用location.reload()方法非常方便
if (confirm('重新加载当前页' + location.href + '?')) {
location.reload();
} else {
location.assign('/discuss'); // 设置一个新的URL地址
}
三.navigator对象
navigator对象表示浏览器的信息,最常用的属性包括:
navigator.appName:浏览器名称
navigator.appVersion:浏览器版本
navigator.language:浏览器设置的语言
navigator.platform:操作系统类型
navigator.userAgent:浏览器设定的User-Agent字符串
四.screent对象
用来表示客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。用的少
五.history对象
history对象保存了浏览器的历史记录,JavaScript可以调用history对象的back()或forward (),相当于用户点击了浏览器的“后退”或“前进”按钮。
这个对象属于历史遗留对象,对于现代Web页面来说,由于大量使用AJAX和页面交互,简单粗暴地调用history.back()可能会让用户感到非常愤怒。
新手开始设计Web页面时喜欢在登录页登录成功时调用history.back(),试图回到登录前的页面。这是一种错误的方法。
任何情况,你都不应该使用history这个对象了。
六.总结
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时,window对象还是javascript中的Global对象,因而所有全局变量和函数也都存在于它的
命名空间下。BOM的组成部分
在使用框架时,每个框架都有自己的window对象以及所有原生构造函数及其他函数的副本
有一些窗口指针,可以用来引用其他框架,包括父框架
top对象始终指向最外围的框架,也就是整个浏览器窗口
parent对象表示包含当前框架的框架,而self对象则回指window
使用location对象可以通过编程方式来访问浏览器的导航系统。设置相应的属性,可以逐段或整体性地修改浏览器的URL
调用replace()方法可以导航到一个新URL,同时该URL会替换浏览器历史记录中当前显示的页面
navigator对象提供了与浏览器相关的信息。到底提供哪些信息,很大程度上取决于用户的浏览器。不过,也有一些公共的属性(如userAgent)存在于所有浏览器中
Bom还有两个对象:screen和history,但它们的功能有限。screent对象中保存着与客户端显示器相关的信息,这些信息一般只用于站点分析。history对象为访问浏览器的历史
记录打开了一个小缝隙,开发人员可以根据此判断历史记录的数量,也可以从历史记录中向后或向前导航到任意页面