计时器
setTimeout() 和 setInterval() 可以用来注册在指定的时间之后单次或重复调用的函数。Window对象的setTimeout()方法用来实现一个函数在指定的毫秒数之后运行。setTimeout()返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行。
//例14-1 定时应用函数
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) {//当end存在时
setTimeout(function () {
clearTimeout(h);
}, end);
}
}
}
}
浏览器定位和导航
Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入新的文档,Document对象的location属性也引用到Location对象。
window.location=document.location;//=>true
解析URL
Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL。Location对象的href属性是一个字符串,后者包含URL的完整文本。Location对象的其它属性:protocol、host、hostname、port、pathname和search.其中hash属性返回URL中的“片段标识符”部分,search属性返回的是问号之后的URL,这部分通常是某种类型的查询字符串。
载入新文档
Location对象的assign()方法可以使窗口载入并显示你指定的URL中的文档。replace()方法也类似,当它在载入新文档之前会从浏览历史中把当前文档删除(不能点返回键)。Location对象还定义了reload()方法,可以让浏览器重新载入当前文档。使浏览器跳转到新页面的一种更传统的方法是直接把新的URL赋值给location属性。
location.assign("page2.html");
location.replace("page2.html");
window.location="http://baidui.com";
location="page2.html";
location="#top"//跳转到此页面的顶部
浏览历史
window对象的history属性引用的是historty属性引用的是该窗口的Historty对象。Historty对象是用来把窗口的浏览历史用文档和文档状态列表的形式表示。History对象的length属性表示浏览历史列表中的元素数量。
History对象的**back()和forward()**方法与浏览器的“后退”和“前进”按钮一样:他们使浏览器在浏览历史中前后跳转一格。**go()**方法接受一个整数参数,可以在历史列表中向前(正参数)或向后(负参数)跳过任意多个页。
history.go(-2);//后退两个历史记录,相当点击“后退”按钮两次
浏览器和屏幕信息
脚本有时需要获取和它们所在的Web浏览器或浏览器所在桌面相关的信息。
Navigator对象
Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。
Navigator对象有四个属性用于提供关于运行中的浏览器的版本信息,并且可以使用这些属性进行浏览器嗅探。
Navigator对象还包括一些杂项的属性和方法。
Screen对象
Window对象的screen属性引用的是Screen对象。它提供有关窗口显示的大小和可用的颜色数量信息。属性width和height指定的是以像素为单位的窗口大小。属性availWidth和availHeight指定的是实际可用的显示大小,它们排除了像桌面任务栏这样的特性所占有的空间。属性colorDepth指定的是显示的BPP(bits-per-pixel)值。
对话框
Window对象提供三个方法来向用户显示简单的对话框。**alert()**向用户显示一条消息并等待用户关闭对话框。confirm()向用户显示一条消息,要求用户点击“确认”或“取消”按钮,并返回一个值(true或false)。prompt()向用户显示一条消息,同样等待用户输入字符串,并返回这个字符串。
do {
var name = prompt("What is your name?");
var corrent = confirm(
"You entered '" +
name +
"'.\n" +
"Click Okay to processed or Cancel to re-enter"
);
} while (!corrent);
alert("Hi, " + name);
错误处理
Window对象的onerror属性是一个事件处理程序,当捕获的异常传播到调用栈时就会调用它。Window对象的onerror事件处理函数的调用通过三个字符串参数。
//重写Window.onerror()
window.onerror = function (msg, url, line) {
if (onerror.num++ < onerror.max) {
alert("ERROR: " + msg + "\n" + url + ":" + line);
return true;
}
};
onerror.max = 3;
onerror.num = 0;
document.write(bn);
作为Window对象属性的文档元素
如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而它们的值指向表示文档元素的HTMLElement对象。当Window对象存在此名字的属性时,如果脚本中的变量声明出现在命名元素之前,那这个变量的存在就会阻止元素获取它的Window属性。而如果脚本的变量声明出现在命名元素之后,那么变量的显示赋值会覆盖该属性的隐式值。