JavaScript高级程序设计之BOM之screen 对象& history 对象第8.3讲笔记

8.4 screen 对象
JavaScript 中有几个对象在编程中用处不大,而screen 对象就是其中之一。screen 对象基本上只
用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器

中的screen 对象都包含着各不相同的属性,下表列出了所有属性及支持相应属性的浏览器。



这些信息经常集中出现在测定客户端能力的站点跟踪工具中,但通常不会用于影响功能。不过,有
时候也可能会用到其中的信息来调整浏览器窗口大小,使其占据屏幕的可用空间,例如:
window.resizeTo(screen.availWidth, screen.availHeight);
前面曾经提到过,许多浏览器都会禁用调整浏览器窗口大小的能力,因此上面这行代码不一定在所
有环境下都有效。
涉及移动设备的屏幕大小时,情况有点不一样。运行iOS 的设备始终会像是把设备竖着拿在手里一
样,因此返回的值是768×1024。而Android 设备则会相应调用screen.width 和screen.height 的值。

8.5 history 对象
history 对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。因为history 是window
对象的属性,因此每个浏览器窗口、每个标签页乃至每个框架,都有自己的history 对象与特定的
window 对象关联。出于安全方面的考虑,开发人员无法得知用户浏览过的URL。不过,借由用户访问
过的页面列表,同样可以在不知道实际URL 的情况下实现后退和前进。
使用go()方法可以在用户的历史记录中任意跳转,可以向后也可以向前。这个方法接受一个参数,
表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转(类似于单击浏览器的“后退”按钮),
正数表示向前跳转(类似于单击浏览器的“前进”按钮)。来看下面的例子。

//后退一页
history.go(-1);
//前进一页
history.go(1);
//前进两页
history.go(2);
也可以给go()方法传递一个字符串参数,此时浏览器会跳转到历史记录中包含该字符串的第一个
位置——可能后退,也可能前进,具体要看哪个位置最近。如果历史记录中不包含该字符串,那么这个
方法什么也不做,例如:

//跳转到最近的wrox.com 页面
history.go("wrox.com");
//跳转到最近的nczonline.net 页面
history.go("nczonline.net");
另外,还可以使用两个简写方法back()和forward()来代替go()。顾名思义,这两个方法可以
模仿浏览器的“后退”和“前进”按钮。

//后退一页
history.back();
//前进一页
history.forward();
除了上述几个方法外,history 对象还有一个length 属性,保存着历史记录的数量。这个数量
包括所有历史记录,即所有向后和向前的记录。对于加载到窗口、标签页或框架中的第一个页面而言,
history.length 等于0。通过像下面这样测试该属性的值,可以确定用户是否一开始就打开了你的
页面。
if (history.length == 0){
//这应该是用户打开窗口后的第一个页面
}
虽然history 并不常用,但在创建自定义的“后退”和“前进”按钮,以及检测当前页面是不是
用户历史记录中的第一个页面时,还是必须使用它。
当页面的URL 改变时,就会生成一条历史记录。在IE8 及更高版本、Opera、

Firefox、Safari 3 及更高版本以及Chrome 中,这里所说的改变包括URL 中hash 的变
化(因此,设置location.hash 会在这些浏览器中生成一条新的历史记录)。
   

8.6
小结
浏览器对象模型(BOM)以window 对象为依托,表示浏览器窗口以及页面可见区域。同时,window
对象还是ECMAScript 中的Global 对象,因而所有全局变量和函数都是它的属性,且所有原生的构造
函数及其他函数也都存在于它的命名空间下。本章讨论了下列BOM 的组成部分。
在使用框架时,每个框架都有自己的window 对象以及所有原生构造函数及其他函数的副本。
每个框架都保存在frames 集合中,可以通过位置或通过名称来访问。
有一些窗口指针,可以用来引用其他框架,包括父框架。
top 对象始终指向最外围的框架,也就是整个浏览器窗口。
parent 对象表示包含当前框架的框架,而self 对象则回指window。
使用location 对象可以通过编程方式来访问浏览器的导航系统。设置相应的属性,可以逐段
或整体性地修改浏览器的URL。
调用replace()方法可以导航到一个新URL,同时该URL 会替换浏览器历史记录中当前显示
的页面。
navigator 对象提供了与浏览器有关的信息。到底提供哪些信息,很大程度上取决于用户的浏
览器;不过,也有一些公共的属性(如userAgent)存在于所有浏览器中。
BOM 中还有两个对象:screen 和history,但它们的功能有限。screen 对象中保存着与客户端
显示器有关的信息,这些信息一般只用于站点分析。history 对象为访问浏览器的历史记录开了一个
小缝隙,开发人员可以据此判断历史记录的数量,也可以在历史记录中向后或向前导航到任意页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值