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
使用go()方法可以在用户的历史记录中任意跳转,可以向后也可以向前。这个方法接受一个参数,表示向后或向前跳转的页面数的一个整数值,例:
//后退一页
history.go(-1);
//前进一页
history.go(1);
//前进两页
history.go(2);
也可以给go()方法传递一个字符串参数,此时浏览器会跳转到历史记录中包含该字符串的第一个位置——可能后退,也可能前进,具体要看哪个位置最近。如果历史记录中不包含该字符串,那么这个方法说明也不做,例:
//跳转到最近的wrox.com页面
history("wrox.com")
另外,还可以使用两个简写方法back()和forward()来代替go()。
//后退一页
history.back();
//前进一页
history.forward();
除了上述的方法外,history对象还有一个length属性,保存着历史记录的数量。这个数量包括所有历史记录,即所有向后和向前的记录。
对于加载到窗口、标签页或框架中的一个页面而言,history.length等于0。
通过像下面这样测试该属性的值,可以确定用户是否一开始就打开了你的页面:
if(history.length == 0){
//这应该是用户打开窗口后的第一个页面
}
虽然history并不常用,但是在创建自定义的“后退”和“前进”按钮,以及检测当前页面是不是用户历史记录中的 第一个页面时,还是必须使用它。
8.6小结
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时,window对象还是ECMAScript中的Global对象,因而所有全局变量和函数都是它的属性,且所有原生的构造函数及其他函数也都存在于它的命名空间下。
◆ 在使用框架时,每个框架都有自己的window对象以及所有原生构造函数及其他函数的副本。每个框架都保存在frames集合中,可以通过位置或通过名称来访问
◆ 有一些窗口指针,可以用来引用其他框架,包括父框架。
◆ top对象始终指向最外围的框架,也就是整个浏览器窗口。
◆ parent对象表示包含当前框架的框架,而self对象则回指window。
◆ 使用location对象可以通过编程方式来访问浏览器的导航系统。设置相应的属性,可以逐段或整体性的修改浏览器的URL
◆ 调用replace()方法可以导航到一个新URL,同时该URL会替换浏览器历史记录中当前显示的页面。
◆ navigator对象提供了与浏览器有关的信息。到底提供哪些信息,很大程度上取决于用户的浏览器;不过,也有一些公共的属性存在于所有浏览器中。
BOM还有两个对象:screen和history,但是它们的功能有限。
screen对象中保存着与客户端显示器有关的信息,这些信息一般只用于站点分析。
history对象为访问浏览器的历史记录开始了一个小缝隙,开发人员可以据此判断历史记录的数量,也可以在历史记录中向后或向前导航到任意页面。
第10章 DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。
DOM脱胎于Netscape及微软公司创始的DHTML(动态HTML),但现在它已经成为表现和操作页面标记的真正的跨平台、语言中立的方式。
1988年10月日DOM1级规范成为W3C的推荐标准,为基本的文档结构及查询提供了接口。
IE中所有DOM对象都是以COM对象的形式实现的。这意味着IE中的DOM对象与原生Javascript对象的行为或活动特点并不一致。