javascript高级程序设计第三版 第8章 BOM

来源:互联网 发布:淘宝哎呦喂被挤爆了 编辑:程序博客网 时间:2024/06/07 07:26

BOM(浏览器对象模型)提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。

8.1 window对象

window对象既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。

8.1.1 全局作用域

全局作用域中声明的变量,函数都会变成window对象的属性和方法。

定义全局变量与在window对象上直接定义属性还是有一点差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性可以。

//使用var语句添加的window属性有一个名为[[Configurable]]的特性,这个特性的值被设置为false,因此这样定义的属性不可以通过delete操作符删除。var age = 29;window.color = "red";//在IE < 9 时抛出错误,在其他所有浏览器中都返回falsedelete window.age;//在IE < 9 时抛出错误,在其他所有浏览器中都返回truedelete window.color;alert(window.age);//29alert(window.color);//undefined

尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。

//这里会抛出错误,因为oldValue未定义var newValue = oldValue;//这里不会抛出错误,因为这是一次属性查询var newValue = window.oldValue;//undefined

8.1.2 窗口关系及框架

top对象始终指向最高(最外)层的框架,也就是浏览器窗口。
window对象指向的都是那个框架的特定实例,而非最高层的框架。
parent(父)对象始终指向当前框架的直接上层框架,在没有框架的情况,parent一定等于top。
self对象,他始终指向window

window.frames[0];window.frames["topFrame"];top.frames[0];top.frames["topFrame"];frames[0];frames["topFrame"];

8.1.3 窗口位置

screenLeft和screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置。
screenX和screenY相同。

8.1.4 窗口大小

用处不大,略

8.1.5 导航和打开窗口

window.open()
window.opener保存着打开它的原始窗口对象。这个属性只在弹出窗口中的最外层window对象(top)中有定义,而且指向调用window.open()的窗口或框架。

//检测弹出窗口是否被屏蔽var blocked = false;try{    var wroxWin = window.open("http://xxx","_blank");    if(wroxWin == null){        blocked = true;    }} catch (ex){    blocked = true;}if(blocked){    alert("The popup was blocked!");}

8.1.6 间歇调用和超时调用

//超时调用,指定的时间过后执行代码,第二个参数告诉JavaScript再过多少时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行var timeoutId = setTimeout(function(){    alert("Hello world!");},1000);//把它取消clearTimeout(timeoutId);//间歇调用var intervalId = setInterval(function(){    alert("Hello world!");},1000);//把它取消clearInterval(intervalId);

超时调用的代码都是在全局作用域中执行,this的值在非严格模式下指向window对象,在严格模式下是undefined。

使用超时调用来模拟间歇调用的是一种最佳模式。

8.1.7 系统对话框

8.2 location对象

属性名 例子 hash “#contents” host “write.blog.csdn.net:80” hostname “write.blog.csdn.net” href “http://write.blog.csdn.net/mdeditor” pathname “/mdeditor” port “8080” protocol “http:” search “?q=javascript”

8.2.1 查询字符串参数

location.search的参数需要用decodeURIComponent()解码

8.2.2 位置操作

打开新URL

location.assign("http://write.blog.csdn.net/mdeditor");window.location = "http://write.blog.csdn.net/mdeditor";location.href = "http://write.blog.csdn.net/mdeditor";

修改location对象的属性都会在浏览器历史记录中生成一条新记录,用户可以通过“后退”回到前一个页面。要禁用可以采用replace()方法。

location.replace("http://write.blog.csdn.net/mdeditor");

reload()重新加载当前显示的页面。建议放在最后一行。

location.reload();//重新加载(有可能从缓存中加载)location.reload(true);//重新加载(从服务器重新加载)

8.3 navigator对象

识别客户端浏览器的事实标准。

8.3.1 检测插件

//非ie,读取插件名判断是否存在navigator.plugins[i].name//ietry{    new ActiveXObject(name);    return true;}catch(ex){    return false;}

8.3.2 注册处理程序

8.4 screen对象

8.5 history对象

history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。

//后退一页history.go(-1);//前进一页history.go(1);//前进两页history.go(2);//跳转到最近的wrox.com页面history.go("wrox.com");//后退history.back();//前进history.forward();history.length;
阅读全文
0 0
原创粉丝点击