BOM浏览器对象模型

288 阅读6分钟

1-BOM介绍

  • Bom:Brower object model浏览器对象模型 例如:一个浏览器的窗口就是一个window对象
    • Bom定义了一套操作浏览器窗口的API
  • Bom主要由五大对象组成:
    • window:浏览器核心对象
    • location:包含当前页面的URL信息
    • history:history对象主要用于记录你当前窗口的历史记录
    • navigator:包含当前浏览器的信息,例如用的什么浏览器,操作系统版本等
    • screen:获取用户电脑的屏幕分辨率
      • 这个一般不用,因为对开发者没啥作用

2-window对象

  • 1.window对象:指的是当前浏览器窗口,它是JS中的顶级对象
    • (1).所有的全局变量都是window对象的属性:最顶级的对象
    • document对象
    • bom对象
    • 全局的方法:alert(),setInterval()………..
    • (2).只要是window的属性和方法,在使用的时候都可以省略window
    • 例如:window.alert() 可以省略window写成alert()
    • 例如:window.document 可以省略window写成document
    • (3).window对象有一个特殊属性叫做name
    • 它永远都是一个字符串,无论给他赋什么值
  • 2.window对象有两个常用的方法:open()与close()
    • open():打开一个窗口
    • close():关闭一个窗口
//1.window是顶级对象,所有的全局变量都是window对象的属性
    let age = 18;
    console.log ( window.age );


    //2.只要是window对象的属性和方法,window可以省略
    console.log ( window.document === document );true


    //3.window有一个特殊的属性叫做name,它永远都是一个字符串
    console.log ( window.name );//默认是一个空字符串
    window.name = 123456;
    console.log ( name );//永远都是一个字符串
    //就算你重新声明一个变量叫做name,也无法覆盖它
    let name = [123];
    console.log ( name );


    //打开新窗口
    document.getElementById('open').onclick = function (  ) {
        /**
        * @param 第一个参数:URL  要打开的窗口网址
         * @param 第二个参数:类似于a标签的target属性,是替换当前窗口还是新开一个窗口
         * @param 第三个参数:新窗口特征:大小和位置等(新窗口才有效_blank)
         * @param 第四个参数:布尔类型  true/false:把新开的窗口加入/不加入到浏览器历史记录
         * @return 新打开的window对象
        */
       let newWindow = window.open('https://www.baidu.com', '_blank', 'top=100,left=100,width=500,height=300', true );
    }


    //关闭窗口
    document.getElementById('close').onclick = function (  ) {
        //参数就是你想要关闭的窗口对象,如果不写,默认就是关闭自己
        //1.这样写如果关闭的是顶级窗口谷歌和火狐会失效,如果失效可以使用下面这种写法
        //window.close( );


        /*2.谷歌火狐为了安全起见会拦截我们的代码,js代码只能关闭用js代码打开的界面,
        所以我们用js先假装在当前窗口打开自己,然后再关闭自己*/
        //这里的url不是空字符串"",而是一个空格字符串  " "
        window.open(" ","_self").close();
    }
</script>

3-window对象三个事件

window对象有三个事件,记录了浏览器窗口从打开到关闭的三个过程

  • 1.window.onload:界面上所有内容加载完毕之后才触发这个事件
  • 2.window.onbeforeunload:界面在关闭之前会触发这个事件
  • 3.window.onunload:界面在关闭的那一瞬间会触发这个事件
//由于我们script标签写在了body标签的上面,这行代码会在body内容还未加载的时候就执行
    console.log ( document.getElementById ( "p1" ) );//null  此时编译器还未解析p标签


    //1.window.onload:界面上所有内容加载完毕后会触发
    window.onload = function ( ) {


        // 由于编译器是从上往下解析html文件的,如果我们的js代码写在body前面,就有可能无法获取dom对象
        console.log ( "当前界面全部加载完毕" );
        //window.onload无论写在界面什么位置都是等整个界面加载完毕之后才会执行
        console.log ( document.getElementById ( "p1" ) );
    }


    //2.window.onbeforeunload:界面在关闭前触发
    window.onbeforeunload = function (  ) {
        /*  1.这个方法主要用于在界面关闭之前保存一些重要数据
        *  2.也可以弹出一个提示框挽留一下用户
        * */


        //return 内容:浏览器会自动弹出一个挽留窗口
        //谷歌和火狐都会拦截这种恶心事,只有IE支持
        return '你真的要狠心抛弃我吗';
    }


    //3 window.onunload:界面关闭时触发
    window.onunload = function (  ) {


        console.log('界面正在关闭');

4-location对象

  • 1.location对象:包含当前页面的URL信息
    • url:全球统一资源定位符
    • url = 协议名(http) + ip地址(域名) + 端口号 + 资源路径
    • 暂时只需要知道location对象包含一个网页的网络url信息即可,具体的含义将在后面阶段学习网络的时候详细讲解
  • 2.location对象有三个常用的方法
    • (1)打开新网页:location.assign('你要打开的新网页的url')
    • (2)替换当前网页:location.replace('要替换的网页url')
    • (3) 刷新当前网页: location.reload()
//1.location对象信息查看
    console.log ( window.location );//location对象
    console.log(location.hash);//资源定位符(锚点定位)
    console.log(location.host);//主机   host = hostname + port
    console.log(location.hostname);//主机名(ip地址)
    console.log(location.port);//端口号
    console.log(location.href);//完整的url路径
    console.log(location.pathname);//资源路径
    console.log(location.protocol);//url的协议
    console.log(location.search);//url请求的参数


    //2.assign:打开新网页
    document.getElementById('assign').onclick = function (  ) {
        //会留下历史记录(可以回退)
        window.location.assign('http://www.itheima.com');
        //上面这行代码等价于下面这行代码
        //window.location.href = 'http://www.itheima.com';
    }


    //3.replace:替换当前网页
    document.getElementById('replace').onclick = function (  ) {
        //不会留下历史记录(不能回退)
        window.location.replace('http://www.itcast.com');
    }


    //4.刷新当前网页
    document.getElementById('reload').onclick = function (  ) {
        //相当于按了F5刷新当前网页
        window.location.reload();
    }


</script>

5-history对象

history对象主要用于记录你当前窗口的历史记录

  • 主要作用就是前进和后退网页(相当于浏览器的左上角前进后退按钮功能)
  • history.forward():前进
  • history.back():后退
document.getElementById('forword').onclick = function (  ) {
        //跳转到当前网页历史记录的下一页,如果没有下一页的历史记录,则不跳转
        history.forward();
    }

6-navigator对象

navigator对象:包含当前浏览器的信息

  • 工作中应用场景:用户信息统计(统计我这个网站平台的用户群体分布,什么浏览器,windows什么版本等)
console.log ( navigator );//navigator对象
    console.log ( navigator.appVersion );//当前浏览器版本信息
    console.log ( navigator.platform );//当前浏览器的硬件平台
    console.log ( navigator.userAgent );//当前浏览器信息


    //使用场景1:判断当前用户的操作系统是32位还是64位
    //谷歌和IE  64位显示WOW64    火狐显示Win64
    if(navigator.userAgent.indexOf('WOW64') != -1 || navigator.userAgent.indexOf('Win64') != -1){
        console.log ( "64位" );
    }else{
        console.log ( "32位" );
    }


    //使用场景2:判断用户当前使用哪种浏览器
    if(navigator.userAgent.indexOf('Chrome') != -1){
        console.log ( "谷歌浏览器" );
    }else if(navigator.userAgent.indexOf('Firefox') != -1){
        console.log ( "火狐浏览器" );
    }else{
        console.log ( "IE浏览器" );//也有可能是其他小众浏览器,可以忽略不计
    }

2-localstorage与sessionstorage

1.1-localstorage(重点)

1.localStorage:本地存储

将数据存储到浏览器

经典场景: 免登录

2.语法

存: localStorage.setItem('属性名','属性值')

取: localStorage.getItem('属性名')

删: localStorage.removeItem('属性名')

清空: localStorage.clear()

3.注意点

a.存储的数据只能是字符串类型。如果是其他数据类型则会自动调用toString()方法转成字符串

b.永久存储。除非自己删,否则一直存于浏览器. 数据存在硬盘中

//存
        document.getElementById('btn1').onclick = function(){
            localStorage.setItem('name','班长');
            localStorage.setItem('age',18);
            localStorage.setItem('Friend',['彭于晏','胡歌','毛不易']);
        }


        //取
        document.getElementById('btn2').onclick = function(){
            let age = localStorage.getItem('age');
            console.log(age); 
        }


        //删
        document.getElementById('btn3').onclick = function(){
            localStorage.removeItem('girlFriend'); 
        }


        //清空:一次性删除所有数据
        document.getElementById('btn4').onclick = function(){
            localStorage.clear(); 
        }

1.2-sessionStorage

1.sessionStorage相当于短命版的localStorage,其他用法完全一致

2.两者区别:HP值不同

localStorage:永久存储(存在硬盘,HP值无限)

sessionStorage:临时存储(存在内存,HP值一条命,只要浏览器关闭就没有了)

 //存
        document.getElementById('btn1').onclick = function(){
            sessionStorage.setItem('name','班长');
            sessionStorage.setItem('age',18);
            sessionStorage.setItem('Friend',['彭于晏','胡歌','毛不易']);
        }


        //取
        document.getElementById('btn2').onclick = function(){
            let age = sessionStorage.getItem('age');
            console.log(age); 
        }


        //删
        document.getElementById('btn3').onclick = function(){
            sessionStorage.removeItem('girlFriend'); 
        }


        //清空:一次性删除所有数据
        document.getElementById('btn4').onclick = function(){
            sessionStorage.clear(); 
        }

1.3面试(localStorage与sessionStorage区别(异同点))

            * 相同点: 作用一致,都是存储数据

            * 不同点: 存储方式不同

                *** localStorage  : 硬盘存储

        *** sessionStorage : 内存存储