这是我参与8月更文挑战的第五天,活动详情查看:8月更文挑战
什么是BOM?
BOM的定义
BOM(Browser Object Model)
即浏览器对象模型- 概念:BOM核心对象是window,它表示浏览器的一个实例。
- 在浏览器中,window是通过JavaScript访问浏览器窗口的接口,同时又是ECMAScript(标准)规定的Global(全局)对象
- 这也就是说“在网页定义的任何对象、变量、函数都以window作为其Global对象
- 作用:因为window有着双重角色,所以在全局作用域声明的变量、函数、都会变成window对象的属性和方法。
/**
* 全局作用域定义的变量age和一个函数callage都被自动的归在了
* window对象名下,因此可以通过window.age访问和调用函数
*/
var name='poo';
function callage(){
console.log(this.name);
}
console.log(window.name); // poo
callage(); // poo
window.callage(); //poo
直接定义全局变量和在window对象上定义变量的区别
- 直接定义的全局变量不能通过delete操作符删除
- 在window对象上定义的属性可以被delete操作符删除
var age=16;
window.color='pink';
delete window.age;
delete window.color;
console.log(window.age);//16
console.log(window.color);//undefined
原理(了解就行)
- 因为使用var语句添加的window属性,有一个叫做
[(Configurable)]
的特性,这个特性的值被设置为false,规定这样定义的属性不可通过delete操作符删除。
window对象的特性
- 如果尝试直接访问一个未声明的变量会抛出一个
(ReferenceError)
错误 - 如果通过
查询window对象
则显示undefined
不会出错
var newvalue=oldvalue;//ReferenceError: oldvalue is not defined
var newvalue=window.oldvalue;//newvalue=undefined
BOM作为浏览器对象,有哪些常用的属性和方法?
location对象
location.href | 返回或设置当前文档的URL |
---|---|
location.hash | 返回URL#后面的内容,若没有#返回空 |
location.host(返回www.xipengheng.cn) | 返回URL中域名部分。 |
location.reload() | 意思是从服务器端重新载入页面 |
location.reload(true) | 不考虑修改日期,绕过缓存直接从服务器重新下载该文档 |
history对象
history.go(num) | 前进或者后退指定页数 |
---|---|
history.back() | 后退一页 |
history.forward() | 前进一页 |
Navigator对象
navigator.userAgent | – 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串) |
---|---|
navigator.cookieEnabled | 返回浏览器是否支持(启用)cookie |
浏览器三种常用的对话框
第一种:alert()方法
- 这是一种最常用的方法,
alert()
接受一个字符串,并将其以警告窗口的形式显示给用户,它的作用只在于传达某种信息而已,用户只能查看后关闭。
第二种:confirm()方法
这种是类似于警告窗的对话框,因为它包含确认和取消两个按钮,并可与用户交互,当用户点击确认时,该方法返回一个布尔值true,同样的取消按钮会返回一个false;
/*根据这个方法的返回值可以得知用户的意愿*/
if (confirm('请确认进行代码校验')) {
alert('确认')
}else{
alert('取消')
}
- 因为confirm()方法的返回值是布尔值,所以有很多可以引申的用法,比如说表单是否要提交,链接是否要跳转;
<a href="http://www.baidu.com" onclick="return confirm('需要使用百度吗?')">百度</a>
此时弹窗如果点击了确认那么就会跳转到百度,点击取消因为confirm()会return false 所以就会取消默认的跳转链接操作。(表单同理)
第三种:prompt()方法
- 这种方法的效果是一个提示框,用于提示用户输入一些文本。这个方法可以传递两个参数,一个显示给用户的提示文本,另一个是文本输入域的预输入文本。
prompt('请输入您的账号昵称','poo')
- 不同功能的对话框也便于与用户交互。