BOM-浏览器对象模型

        BOM:Browser Object Model浏览器对象模型,在bom中给我们提供了一整套可以操作浏览器的属性和方法

        浏览器的部分(一般都是css不能操作的)

        BOM操作中统一语法都是:window.XXX

        但是其实一般写代码的时候这个window是可以忽略不写

        比如我们之前学习过的了alert这个东西其实是归属于BOM的,标准语法应该是:window.alert()

        注意:因为这些东西都是属于浏览器给的,所以就会导致在不同的浏览器上显示的效果可能是不一样的。

浏览器的可视窗口尺寸

可视窗口:就是我们可以看见的区域
获取可视窗口的尺寸
    获取窗口的宽度:window.innerWidth
    获取窗口的高度:window.innerHeight
注意:获取的宽度和高度是包含滚动条在内的
   console.log('窗口的宽度:',window.innerWidth);

浏览器的弹出框

1.提示框:
    语法:window.alert('提示文本')
    表现形式:一个提示文本+一个确定按钮
    返回值:undefined
2.询问框
    语法:window.confirm('提示文本')
    表现形式:一个提示文本+一个确定按钮+取消按钮
    返回值:用户点了确定就返回true,点取消就返回false
3.输入框
    语法:window.prompt('提示文本')
    表现形式:一个提示文本+一个确定按钮+取消按钮+一个文本输入框
    返回值:点了确定返回的就是文本输入框的内容,点了取消返回的就是null
三个框的共同点:都会阻止程序的执行,必须等到用户点了程序才会继续向下执行

浏览器的常见事件

事件一般都是有触发条件,事件名称之前写的时候一般都要加on
浏览器的常见事件
1.load
    语法:window.onload = function(){}
    当触发了load事件之后才会执行function中的代码
    load什么时候触发:当页面中所有的外部资源(html、css、js、图片、视频、音频)
                     全部加载完毕的时候就会自动触发load事件
    使用场景:
        假如你的js代码写在了head标签中了,你还想操作页面元素(标签)
        这个时候因为代码从上到下依次执行,会先执行js
        再执行body中的语句,所以会存在找不见这个标签的风险。
        这个时候我们就只需要加一句:window.onload
        将我们的代码放到load的执行函数中就没有这个问题了
        因为onload会等到页面资源加载完毕之后才会执行。
2.resize
    语法:window.onresize = function(){}
    resize的触发时机:当页面尺寸发生改变的时候就会触发
3.scroll
    语法:window.onscroll = function(){}
    触发时机:当页面的滚动条为止发生改变的时候就触发

浏览器的地址栏

在window之下有一个location对象,这个对象中存储了一些和浏览器地址栏相关的信息
1)window.location.href这是一个可读可写属性
    拿到网址:window.location.href
    设置网址:window.location.href = '新的网址'
    案例:点击一个按钮,切换网址
        1.在js中获取按钮
        2.给按钮绑定一个点击事件
        3.更改网址
<body>
    <button id="btn">点我</button>
</body>
<script>
    var btn = document.getElementById('btn')
    btn.onclick = function () {
        window.location.href = 'http://www.baidu.com'        // 更改网址
    }
</script>
//---------------------------------------------------------------------------
2)reload()
    语法:window.location.reload()
    作用:重新加载页面(其实就是刷新的意思)
    注意:这句话不要放在打开页面就能执行的地方
    案例:
        写一个点击按钮实现刷新的功能
    步骤:
        1.在js中先获取按钮
        2.给按钮绑定点击事件
        3.点击执行执行刷新语句
<body>
    <button id="shuaxin">点我</button>
</body>
<script>
    var shuaxinbtn = document.getElementById('shuaxin')
    shuaxinbtn.onclick = function () {
        window.location.reload()       //刷新页面
    }
</script>

操作浏览器标签页

1)open()
    语法:window.open('地址')
    会以新窗口的方式打开该地址

<body>
    <button id="btn">打开</button>
</body>
<script>
    var btn = document.getElementById('btn')
    btn.onclick = function () {
        // 执行window.open()  点了按钮之后会以新窗口的方式打开百度这个网址
        window.open('http://www.baidu.com')
    }
</script>
//-----------------------------------------------------------------
2)close()
    语法:window.close()
    会关闭当前页面

<body>
    <button id="btn2">关闭</button>
</body>
<script>
    var btn2 = document.getElementById('btn2')
    btn2.onclick = function () {
        window.close()
    }
</script>

浏览器卷去的尺寸

如何获取浏览器卷去的高度(.scrollTop)
    语法1:document.documentElement.scrollTop(html中有doctype标签时用)
    语法2:document.body.scrollTop(html中无doctype标签时用)
    兼容语法:
var scrollTop = document.documentElement.scrollTop ||  document.body.scrollTop
如何获取浏览器卷去的宽度(.scrollLeft)
    语法1:document.documentElement.scrollLeft
    语法2:document.body.scrollLeft
    兼容语法:
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
//什么时候执行?页面滚动的时候就会自动触发
    window.onscroll = function(){
        // 只要页面滚动了,就获取一下页面卷去的宽度
        var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
        console.log(scrollLeft);
    }

浏览器的历史记录

操作历史记录:
得有历史记录才可以操作
1)回退:
    语法:window.history.back()
    作用:回到上一个历史记录页面(等价于🔙按钮)
2)前进:
    语法:window.history.forward()
    作用:取到下一个历史记录(等价于→按钮)
3)跳转:
    语法:window.history.go(参数)
    这个参数可以写一个数字
        正整数:就是前进几个页面
        负整数:回退几个页面
        0:跳转到本页面,其实就是刷新

设置滚动条的滚动距离

写参数的方案1:传递数字
    语法1:window.scrollTo(x,y)
        x:横向的卷去的尺寸
        y:纵向卷去的尺寸
    注意:
         1.他是瞬间滚动,没有动画效果
         2.必须传递2个数字,1个不行
写参数的方案2:传递一个对象
     语法2:window.scrollTo({left:?,top:?,behavior:'smooth'})
        left:横向卷去的尺寸
        top:纵向卷去的尺寸
        想设置谁就设置谁
        还可以在对象中写第三条属性,比如写一个behavior将值设置位smooth,这样就可以有平滑滚动的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值