BOM(浏览器对象模型)主要用于管理浏览器窗口,它提供了大量独立的、可以与浏览器窗口进行互动的功能,这些功能与任何网页内容无关。浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象。
1.1使用window对象
window对象是BOM的核心,代表浏览器窗口的一个实例。在全局作用域中声明的所有变量和函数也是window对象的属性和方法。
1.1.1 访问浏览器窗口
通过window对象可用访问浏览器窗口。
浏览器对象简单说明如下:
window |
客户端JavaScript中的顶层对象。 |
navigator |
包含客户端有关浏览器的信息。 |
screen |
包含客户端显示屏的信息。 |
history |
包含浏览器窗口访问过的URL信息。 |
location |
包含当前网页文档的URL信息。 |
document |
包含整个HTML文档,可被用来发访问文档内容,及其所有页面元素。 |
1.1.2全局作用域
客户端JavaScript代码都在全局上下文环境中运行,window对象提供了全局作用域。
下面用法:
var a = '我是程序员';window.b = 'window.b';c = '我喜欢js';document.write(delete window.a);document.write(delete window.b);document.write(delete window.c + '<br>');document.write(window.a);document.write(window.b);document.write(window.c);
使用var语句声明全局变量,window会为这个属性定义一个名为‘configgurable’的特性。
1.1.3 使用系统测试方法
window对象定义了3个人机交互的接口方法:
alert():简单的提示对话框,由浏览器向用户弹出提示性信息。该方法包含一个可选的提示信息参数。
confirm():简单的提示对话框,由浏览器向用户弹出提示性信息。不过该方法弹出的对话框包含两个按钮,‘确认’和‘取消’。
prompt():弹出提示对话框,可以接收用户输入的信息,并把用户输入的信息返回。
用法1:
var user = prompt('请输入你的用户名:');if (!!user) {var ok = confirm('你输入的用户名为:\n' + user + '\n请确认。');if (ok) {document.write('欢迎您:\n' + user);} else {user = prompt('请重新输入你的用户名:');document.write('欢迎您:\n' + user);}} else {user = prompt('请输入你的用户名:');}
这3个仅接收纯文本信息,用户只能使用空格、换行符和各种符号来格式化提示对话框中的显示文本。不同浏览器对于这3个对话框的显示效果略有不同。
用法2:
window.alert = function (title, info) {var box = document.getElementById('alert_box');var html = '<dl><dt>' + title + '</dt><dd>' + info + '</dd><\/dl>';if (box) {box.innerHTML = html;box.style.display = 'block';} else {var div = document.createElement('div');div.id = 'alert_box';div.style.display = 'block';document.body.appendChild(div);div.innerHTML = html;}}alert('我是程序员', '我喜欢Js!');
1.1.4 控制窗口位置
使用window对象的moveTo()和moveBy()方法可以将窗口精确地移动到一个新位置。这两个方法接收两个参数,其中moveTo()接收的是新位置的x和y坐标值,而moveBy()接收的是在水平和垂直方向上移动的像素数。
下面用法:
window.moveTo(0, 0);window.moveBy(0, 100);window.moveTo(200, 300);window.moveBy(-50, 0);
1.1.5 使用定时器
window对象包含4个定时器专用方法,使用他们可以实现倒霉定时运行,避免连续运行。就可以设计动画。
1. setTimeout()方法
定义:
setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。
语法:
var o=setTimeout(code,millisec)
参数:
code | (必需。要延时执行的代码字符串。) |
millisec | 必需。在执行代码前需等待的毫秒数。) |
下面用法:
var o = document.getElementsByTagName('body')[0].childNodes;for (var i = 0; i < o.length; i++) {o[i].onmouseover = function (i) {return function () {f(o[i]);}}(i);}function f(o) {var out = setTimeout(function () {document.write(o.tagName);}, 500);}
2. clearTimeout()方法
定义:
clearTimeout()方法可取消由setTimeout()方法设置的timeout。
语法:
clearTimeout(id_of_settimeout)
参数:
id_of_settimeout(由setTimeout()返回的ID值。该值标识要取消的延迟执行代码块。)
下面用法:
var o = document.getElementsByTagName('body')[0].childNodes;for (var i = 0; i < o.length; i++) {o[i].onmouseover = function (i) {return function () {f(o[i]);}}(i);o[i].onmouseout = function (i) {return function () {clearTimeout(o[i].out);}}(i);}function f(o) {o.out = setTimeout(function () {document.write(o.tagName);}, 500);}
3. Setlnterval()方法
定义:
setInterval()方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setIn.........