window对象
BOM的核心,表示浏览器的一个实例。
所有在全局中声明的变量、函数都会变成window对象。
全局变量不能delete操作符删除
直接在window对象上的定义的属性是可以用delete删除的。
尝试访问为声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。
窗口关系和框架
如果页面中包含框架,则每个框架都拥有自己的window对象,并且保持在frames集合中。在frame集合中,可以通过数值索引或者框架名称来访问相应的window对象。
每个window对象都有一个name属性,其中包含框架的名称。
- top表示顶层框架
- parent对象始终指向当前框架的直接上层。
- self,始终指向window对象。
窗口位置
不同浏览器的支持不一样
screenLeft:窗口相当于屏幕左边的位置
screeTop : 窗口相对于屏幕上边的位置
screenX
screenY
兼容解决方法:
var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;
moveTo()
moveBy()将出安康精确的移到一个新位置。
不适用框架,只能对最外层window对象使用
窗口大小
不同浏览器的支持不一样,所有,无法确定浏览器串口本身的大小,可以取得页面视口的大小。
兼容解决方案
var pageWidth = window.innerWidth,
pageHeight = window.innerHeight;
if(typeof pageWidth != "number"){
if(document.compatMode == "CSS1Compat"){
pageWidth = document.documentElement.clientWidth;
pageHeight = document.documentElement.clientHeight;
}else{
pageWidth = document.body.clientWidth;
pageHeight = document.body.clientHeight;
}
}
resizeTo()
resizeBy() 可以调整浏览器窗口的大小。
不适用框架,只能对最外层window对象使用
导航和打开新窗口
open() 可以导航到一个特定URL,也可以打开一个新的浏览器窗口。
参数:要加载的URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。
返回:一个指向新窗口的引用
可以关闭使用open打开的窗口,但是原始窗口不行
新创建的window对象都有一个opener属性,保存着打开它的原始窗口对象,原始窗口没有这样的指针。
将opener设置为null告诉浏览器新创建的标签不需要与打开它的标签页通信。
安全限制和弹出窗口屏蔽程序
检测返回值是否为null确定新弹出的窗口是否被屏蔽,并将其封装到一个try-catch块中。
间歇调用和超时调用
javaScript单线程语言。
超时调用—>在指定的时间过后执行代码–>setTimeout()—>clearTimeout()取消
间歇调用—>每个指定的时间就执行一次代码–>setInterval()—>clearInterval()取消
javascript任务队列,会把任务添加到队列中顺序执行.
一般使用超时调用来模拟间歇调用是一种最佳的模式
最好不要使用间歇调用:一个间歇调用可能会在前一个间歇调用结束之前启动。
系统对话框
下面这三个是同步和模态的,显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又恢复执行。
- alert()
- confirm()
- prompt()
下面的是异步显示的,能够将控制权立即交换给脚本。
- window.print()
- window.find()
location对象
- 提供了与当前窗口中加载的文档有关的信息,还提供了一些导航的功能。
- 可以将URL解析为独立的片段
location对象及时window对象也是document对象。他们引用的是同一个对象。
属性名 例子 说明 hash host hostname href port protocol search
查询字符串参数 —page207
- location.assign(“http://www.baidu.com");立即打开新URL并在浏览器的历史记录中生成一条记录。
- 每次修改location的属性(hash除外),页面都会以新的URL重新加载。
- repalce()方法,会导航到URL,但是不会在历史记录中生成新记录。
- reload()时不传递然和参数,页面就好以最有效的方式重新加载。 reload(true)会强制从服务器重新加载。之后的代码可能会不执行,取决于网络延迟或系统资源等因素,最好将其放在最好一行。
navigator对象
识别客户端浏览器的事实标准。
可以检测网页浏览器的类型。
检测插件
非IE可以用plugins数组,其中包含属性:
属性名 描述
name 插件的名字
description 插件的文件名
filename 插件的文件名
length 插件所处理的MIME类型数量检测插件程序—-page211
- 每个插件本身也是一个MimeType对象的数组。可以通过方括号访问。
- IE插件 专有的ActiveXObject类型,并且要知道其COM标示符。—-page212
- 兼容插件检测方法—-page212
注册处理程序
registerContentHandler()
registerProtocalHandler() 可以让一个站点指明它可以处理特定类型的信息。
参数:
要处理的MIME类型、可以处理该MIME类型的页面的URL、以及应用程序的名称。
screen对象
在编程中用处不大的,表明客户端的能力。
history对象
保存着用户上网的历史记录,从窗口被打开的那一刻算起。
每个浏览器窗口、每个标签乃至每个框架,都有自己的history对象与特定的window对象关联。
方法
go()
back()
forward()
属性
length