JS BOM对象

BOM概念

BOM即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。

BOM由一系列相关的对象构成,并且每个对象提供了很多方法和属性。

BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初值是Netscape浏览器标准的一部分。

bom对象大致包含五个部分:

  • Window对象:浏览器窗口对象
  • Navigator:浏览器对象
  • Screen:浏览器所处客户端的显示器屏幕对象
  • History:浏览器当前窗口的访问历史记录对象
  • Location:浏览器当前窗口的地址栏对象

open对象  打开一个新的页面,返回window对象

var newWindow //用来存储新打开的窗口
openNew.onclick=function(){
    newWindow=window.open("https://www.baidu.com")
}

close  关闭打开的窗口

closeNew.onclick=function(){
    newWindow.close()
}

系统的对话框

  • alert()
  • confirm()点击确认返回True点击取消返回False
  • prompt()参数有两个,第一个为提示的内容,第二个为输入框的内容点击确认返回输入的内容点击取消返回null

location的方法

assign.onclick = function() {
            // assign():可以打开新的页面,并且可以返回,可以产生历史纪录的
            location.assign("https://www.baidu.com");
        }
        reload.onclick = function() {
            // reload():实现的是页面刷新
            location.reload()
        }
        replace.onclick = function() {
            // replace():用新文档替换当前的文档,可以实现打开新的页面的功能,但不能返回,故没有产生历史记录
            location.replace("https://www.baidu.com");
        }
        href.onclick = function() {
            location.href("https://www.baidu.com");
        }

history对象

btn.onclick = function() {
            history.back(); //后退到历史纪录的列表的上一个url
        }
        btn2.onclick = function() {
            location.href = "3.html";
        }
        btn3.onclick = function() {
            history.forward(); //前进到历史纪录列表的下一个url
        }
        btn4.onclick = function() {
            history.go(1)
        }

 onload:页面加载时触发

window.onload=function(){
            console.log("aa");
        }

onscroll:页面滚动条滚动时触发

window.onscroll=function(){
                console.log("onscroll")
            }

onresize:当窗口大小改变时触发

window.onresize = function() {
            console.log("onresize")
        }

函数防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。

var timer;
        username.oninput=function(){
            clearTimeout(time);
            timer=setTimeout(function(){
                console.log("aa")
            },2000)
        }

函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。

var timer=null;
        uesrname.oninput=function(){
            if(timer){
                return
            }
            timer=setTimeout(function(){
                console.log("aa");
                timer=null;
            },2000)
        }

函数节流(throttle)与 函数防抖(debounce)都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。

轮播图案例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #div1 {
            width: 500px;
            height: 400px;
            margin: 0 auto;
            position: relative;
            text-align: center;
        }
        
        #div1 img {
            width: 600px;
            height: 400px;
        }
        
        #div1 ul {
            width: 400px;
            height: 20px;
            display: flex;
            justify-content: space-between;
            position: absolute;
            bottom: 10px;
            margin-left: 50px;
        }
        
        #div1 ul li {
            list-style: none;
            width: 20px;
            height: 20px;
            background: rgba(255, 255, 255, .6);
            border-radius: 50%;
        }
        
        .active {
            background: rgba(0, 0, 0, .6) !important;
        }
    </style>
</head>

<body>
    <div id="div1">
        <img src="img/bg1.jpg" alt="">
        <ul>
            <li class="active"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        var index = 1;
        var img = document.querySelector("#div1");

        function test() {
            var arr = ["bg1.jpg", "bg2.jpg", "bg3.jpg", "bg4.jpg", "bg5.jpg", "bg6.jpg", ]
            var img = document.querySelector("#div1 img");
            img.src = "img/" + arr[index];


            var list = document.querySelectorAll("#div1 ul li");
            for (i = 0; i < list.length; i++) {
                list[i].classList.remove("active")
            }
            list[index].classList.add("active")

            index++;
            if (index > 5) {
                index = 0;
            }
        }
        setInterval(test, 1000);
    </script>
</body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值