6 javascript BOM

本文详细介绍了浏览器对象模型(BOM)的核心对象window及其属性和方法,包括全局作用域、窗口位置与大小调整、导航和打开窗口等功能。同时,还探讨了location、navigator等对象的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.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对象为访问浏览器的历史
记录打开了一个小缝隙,开发人员可以根据此判断历史记录的数量,也可以从历史记录中向后或向前导航到任意页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值