BOM
BOM(即浏览器对象模型)是一个用于访问浏览器和计算机屏幕的对象集合。我们可以通过全局对象window和window.screen来访问这些对象。
window对象
在JavaScript中,每个宿主环境都有一个全局对象。具体到浏览器环境中,这就是window对象了。环境中所有的全局变量实际上都是该对象的属性。同样的,所有的JavaScript核心函数也都是window对象的方法。
window.navigator
navigator是一个用于反映浏览器本身及其功能信息的对象。例如其中的navigator.userAgent是一个用于浏览器识别的长字符串。
由于各种浏览器的功能是各不相同的,开发人员需要根据userAgent字符串来识别不同的浏览器,并提供不同版本的代码。这种字符串很难追踪到所有的浏览器以及其各种版本。所以,直接检测我们使用的功能在浏览器中是否存在要简单的多,例如:
if(typeof window.addEventListener === 'function'){ }else{ }
另外,还有一个原因也促使我们避免使用userAgent检测浏览器,即在某些浏览器中,用户是可以对该字符串进行修改,并将其伪装成其他浏览器。
window.location
location属性石一个用于存储当前载入页面的URL信息的对象。例如,其中的location.href显示的是完整的URL,而location.hostname则只显示相关的域名信息。下面,我们通过一个简单的循环列出location对象的完整属性列表。
另外,location对象还提供了三个方法,分别是reload()、assign()和replace()。需要注意的是页面导航存在着许多不同的方式,下面列出的只是其中一小部分。
window.location.href="http://www.baidu.com/"; location.href="http://www.baidu.com/"; location="http://www.baidu.com/"; location.assign('http://www.baidu.com/');
replace()方法的作用与assign基本相同,只不过它不会再浏览器的历史表中留下痕迹:
location.replace("http://www.yahoo.com");
另外,如果我们想重新载入某个页面,可以调用:
location.reload()
或者,也可以让location.href属性指向自己:
window.location.href=window.location.href;
location=location;
window.history
history属性允许我们在同一个浏览器会话中存储有限数量的访问记录。例如,我们可以通过以下方式来查看用户可在这之前访问了多少页面:
window.history.length
但是这种访问是受限制的,例如像下面这样访问是不被允许的:
但是我们可以在当前用户会话中对个页面进行来回切换,就像在浏览器中单击后退/前进按钮一样:
history.forward()
history.back()
另外,我们也可以用history.go()来实现页面跳转:
history.go(0);//重载当前页
window.frames
frames属性是当前页面中所有iframe元素的集合,可以通过frames[]访问具体的iframe元素的window对象。
但是,无论当前页面中是否存在iframe元素,window.frames属性总是存在的,并指向了window对象本身。
window.screen
screen属性所提供的是浏览器以外的桌面信息。例如,screen.colorDepth属性所包含的是当前显示器的色位。另外,我们还可以查看当前屏幕的实际状态:
其他
window.open()是可以让我们打开新浏览器窗口的方法(即弹出窗)。如今,多数浏览器的策略及其用户设置都会阻止浏览器的弹出窗,如果没有用户的运行,我们任何打开新窗口的举动都有可能被阻止。
window.close()方法则是用来关闭新窗口的。
window.moveTo()、window.resizeTo()、window.moveBy()
window.resizeTo()、window.resizeBy()