浏览器对象模型—BOM

282 阅读3分钟

这是我参与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')

image.png

  • 不同功能的对话框也便于与用户交互。