您的位置:首页 > Web前端 > JavaScript

JavaScript高级程序设计(第3版)第八章读书笔记

2016-03-01 21:51 585 查看
第八章 BOM

1. BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象由双重较色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其Global对象,因此有权访问parseInt( )等方法。

2. 由于window对象同时扮演者ECMAScript中的Global对象的角色,因此所有在全局作用域中声明的变量、函数都会成为window对象的属性和方法。

3. 定义全局变量与在window对象上直接定义属性的差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性更可以删除。尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。

4. 如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中。每个window对象都有一个name属性,其中包含框架的名称。top对象始终指向最高(最外)层的框架,也就是浏览器窗口。与top相对的另一个window对象是parent。parent(父)对象始终指向当前框架的直接上层框架,在没有框架的情况下,parent一定等于top,此时它们都等于window。

5. IE、Safari、Opera和Chrome都提供了screenLeft和screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置。Firefox则在screenX和screenY属性中提供相同的窗口位置信息,Safari和Chrome也同时支持这两个属性,但Opera中这两个属性与screenLeft和screenTop属性并不对应,因此,跨浏览器去的窗口左边和上边的位置代码如下:

var leftPos = (typeof window.screenLeft =="number")?window.screenLeft:window.screenX;
var topPos = (typeof window.screenTop == "number")?window.screenTop:window.screenY;
注意:无法在浏览器的条件下去的窗口左边和上边的精确坐标值。

6. 使用moveTo( )和moveBy( )方法可能将窗口精确地移动到一个新位置。moveTo( )接收新位置的x和y坐标值,moveBy( )接收的是在水平和垂直方向上移动的像素数。

注意:这两个方法可能会被浏览器禁用,而且在Opera和IE7及更高版本中默认就是禁用的。另外,这两个方法都不适用于框架,只能对最外层的window对象使用。

7. 页面视口,即浏览器缩放时的真实大小。虽然最终无法确定浏览器窗口本身的大小,但却可以取得页面视口的大小:

var pageWidth = window.innerWidth, pageHeight = window.innerHeight;
if(typeof pageWidth != "number"){
if(document.compatMode == "CSS1Compat"){
pageWidth = document.documentElement.clientWiidh;
pageHeight = document.documentElement.clientHeigth;
}else{
pageWidth = document.body.clientWiidh;
pageHeight = document.body.clientHeigth;
}
}


8. 移动开发,阅读http://t.cn/zOZs0Tz.
9. 使用window.open( )方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。接收4个额参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。通常只需传递第一个参数,最后一个参数只在不打开新窗口的情况边使用。

10. 间歇调用和超时调用

超时调用需要使用window对象的setTimeout( )方法,接受两个参数,要执行的代码和以毫秒表示的时间。推荐第一个参数用该函数表示,不要传递字符串,因为可能会导致性能损失。经过指定的时间后,代码不一定会执行。因为JavaScript是一个单线程序的解释器,一定时间只能执行一段代码,需要在之前代码执行完毕,队列为空时才能执行。该方法在调用之后,会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识,可以通过它来取消超时调用。只要在指定的时间尚未过去之前调用clearTimeout(
),就可以完全取消超时调用。

间歇调用会按照指定的时间间隔重复执行代码,直至间歇调用被取消或者页面被卸载。传递参数,与用法同setTimeout( )。也会返回一个间歇调用ID,该ID用来取消。也可使用clearInterval( )方法并传入相应的间歇调用ID。取消间歇调用的重要性远高于取消超时调用。可使用超时调用来模拟接卸调用。

11. 浏览器通过alert( )、confirm( )和prompt( )方法可以调用系统该对话框向用户显示消息。它们的而外观由操作系统及浏览器设置决定,而不是由CSS决定。

调用alert()方法的结果就是向用户显示一个系统对话框,其中更包含指定的文本和一个“ok/确定”按钮。

调用confirm( ),点击了OK返回true,点击了cancel或右上角的x按钮,返回false。

prompt( )方法接收两个参数:要显示给用户的文本提示和文本输入域的默认值(可以是一个空字符串)。用户单击ok按钮,则prompt( )返回文本输入域的值,如果单击了Cancel或没有单击OK而是通过其他方式关闭了对话框,则该方法返回null。

12. location对象也是BOM对象,提供了与当前窗口中加载的文档有关的信息,还提供一些导航功能。事实上,location对象是一个特殊的对象,因为它既是window对象的属性,也是document对象的属性,即window.location和document.location引用的是同一个对象。location对象不仅保存着当前文档的信息,还将URL解析为独立的片段。

13. 使用location对象改变浏览器位置的多种方式:

location.assign("http://www.wrox.com");
window.location="htttp://www.wrox.com";
location.href="htttp://www.wrox.com";
还可以修改location对象的其他属性来改变当前加载的页面,任何一种方式修改URL之后,页面都会以新URL重新加载,浏览器的历史记录就会生成一条新记录。调用replace( )方法,将禁用此种行为,用户回不到前一个页面。

reload( )方法的作用格式重新加载当前显示的页面。如果没有传递参数,页面就会以最有效的方式重新加载,一般会从浏览器缓存中重新加载,如果要强制从服务器重新加载,则需要向该方法传递参数true。

14. navigator对象是识别客户端浏览器的事实标准,其属性通常用于检测显示网页的浏览器类型。

15. screen对象用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息 ,如像素高度和宽度等。每个浏览器中的screen对象都包含着不同过的属性,支持也不同。

16. history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。因为history是window对象的属性,因此每个浏览器窗口、每个标签乃至每个框架,都有自己的history对象与特定的window对象关联。

使用go( )方法可以在用户的历史记录中任意调整,可以向前也可以向后,参数用正负数表示,也可以传递一个字符串参数,跳转到最近的页面。还有back( )和forward( )代替go( )。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: