setTimeout()
Window对象的setTimeout()方法用来实现一个函数在指定的毫秒数之后运行。该函数返回一个值,这个值可以传递给clearTimeout()用于取消这个函数运行。
setInterval()
和setTimeout()一样,setInterval()函数也返回一个值,这个值可以传递给clearInterval()用于取消后续函数的调用。
function invoke(f, start, interval, end){
if (!start){
start = 0;
}
if (arguments.length <= 2){
setTimeout(f,start);
}
else{
setTimeout(repeat, start);
function repeat(){
var h = setInterval(f, interval);
if (end){
setTimeout(function(){clearInterval(h)}, end);
}
}
}
}
Document对象的location属性和Window对象的location属性都引用了Location对象。
// true
window.location === document.location;
Document对象还有一个URL属性,是文档首次载入后保存该文档的URL静态字符串。
解析URL
location
载入新的文档
修改location.href或调用location.assign(),这修改方式其实是一种意思。
调用location.replace(),他在载入新文档之前会从浏览器历史清空。
还有个reload(),重新载入当前文档。
Window对象的history属性引用的是该窗口的History对象。History对象额length属性表示浏览器历史列表中的元素数量。出于安全的因素,脚本不能访问已保存的URL。
History对象的back()和forward()方法与浏览器的“后退”和“前进”按钮一样。还有个go()方法,接收一个整数参数,可以在历史列表中向前(正参数)或向后(负参数)跳过任意多个页。
Navigator对象
Screen对象
Window对象的screen属性引用的是Screen对象。
属性width和height指定的是以像素为单位的窗口大小
属性availWidth和availHeight指定的是实际可用的显示大小
colorDepth指定的是BPP(bits-per-picel)
alert()用来像用户显示一条消息。在大部分浏览器中该方法会阻塞
confirm()也可以显示一条消息,要求用户单击“确定”或“取消”按钮,并返回一个布尔值。该方法会阻塞
prompt()同样也显示一条消息,等待用户输入字符串,并放回那个字符串。该方法会阻塞
showModalDialog()显示一个保护HTML格式的“模态对话框”。第一个参数指定对话框HTML的URL。第二个参数是一个任意值,这个值在对话框的脚步中可以通过window.dialogArguments属性访问。第三个参数是非标准的,包含以分号隔开的name=value对。showModalDialog()这个方法指导窗口关闭之前不会放回。当窗口关闭后,window.returnValue属性的值就是次方法返回值。
如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,他的名字是id属性的值,而他们的值纸箱表示文档元素的HTMLElement对象。
打开窗口
使用Window对象的open()方法可以打开一个新的浏览器窗口,并返回代表那个窗口的Window对象。
它有4个可选的参数。
第一个参数是要在新窗口中显示文档的URL。
第二个参数是新打开的窗口的名字。如果知道的是一个已经存在的窗口的名字,会直接使用已存在的窗口。如果省略此参数,会使用指定的名字“_blank”。
Window对象如果有name属性,就用它保存窗口名字。该属性是可写的,并且脚步可以随意设置。如果传递给window.open()一个除“_blank”之外的名字,通过该调用创建的窗口将以该名字作为name属性的初始值。如果
第三个参数是一个以逗号分隔的列表,包含大小和各种属性,用于表面新窗口是如何打开的。
第四个参数只在第二个参数命名的是一个村庄的窗口才有用。是一个布尔值,如果为true第一个参数指定的URL替换掉窗口浏览历史的当前条目。如果为false在窗口历史中创建一个新的条目。
关闭窗口
调用Window对象的close()方法将关闭一个窗口。
即使一个窗口关闭了,代表它的Window对象仍然存在。已关闭的窗口会有个值为true的closed属性,它的document回事null,它的方法通常也不会再工作。
窗体之间的关系
如果一个窗口是顶级窗口,那么其parent属性引用的就是这个窗口本身
parent == self;
引用窗口或窗体的子孙窗体。窗体是通过
var iframeElement = document.getElementById("f1");
var childFrame = document.getElementById("f1").contentWindow;
可以进行反向操作,从表示窗体的Window对象来获取该船体的元素。用Window对象的frameElement属性。
var elt = document.getElementById("f1");
var win = elt.contentWindow;
// true
win.frameElement === elt;
//顶级窗口来说永远是true
window.frameElement ===null;
Window对象的frames属性引用的是类数组对象,可以通过数字或窗体名进行索引。
假设Web页面里有两个元素,分表叫“A”和“B”,假设这些窗体所包含的文档来自于相同的一个服务器,并且包含交互脚本。窗体A里定义了一个变量i
var i = 3;
这个变量只是全局对象的一个属性,也就是Window对象的一个属性。窗体A中的代码可以用标识符i来引用变量,或者Winow对象显示地引用这个变量
window.i;
由于窗体B中的脚本可以引用窗体A的Window对象,因此它也可以引用那个Window对象的属性
// 改变窗体A中的变量i的值
parent.A.i=4;