前端基础之Bom (按键事件,定时器,窗口事件,滚动条事件和获取url)

112 阅读2分钟

单词小记

Interval      间隔
press         压,按入
location      位置,内存里的地址

1. 常用按键事件

1.1 按键事件

onkeypress              按下加抬起
                        不识别系统按钮(功能键等),keycode区分大小写
onkeydown               按下
                        识别系统按钮,keycode不区分字母大小写,    
onkeyup                 抬起
执行顺序:
    onkeydown》onkeypress》onkeyup

1.2 按键事件对象

keyCode                  返回该键的ASCII值

2. BOM

2.1 调整窗口大小

onresize                 窗口大小发生改变时触发
例:
        window.addEventListener("resize",function(){
              //浏览器长度
              console.log(window.innerWidth);
              if(window.innerWidth>800){}
              else{}
            })

2.2 定时器

2.2.1 setTimeout和clearTimeout (定时器只调用一次)

setTimeout(调用函数,延迟毫秒数)  开启定时器
clearTimeout(定时器标识符)       清除定时器
例:
       btn1和btn2是两个按钮元素(d.queryselector())
       btn1.addEventListener("click",function(){
          time=null
          time=setTimeout(function(){
                text.style.color="pink"
              },3000)
            })
       btn2.addEventListener("click",function(){
          clearTimeout(time)
        }) 

2.2.2 setInterval和clearInterval (定时器可循环调用)

setInterval(调用函数,延迟毫秒数)  开启定时器
clearInterval(定时器标识符)       清除定时器
例:
        btn1和btn2是两个按钮元素
        btn1.addEventListener("click",function(){
              clearInterval(time)
              time=setInterval(function(){
                    a++
                    text.innerHTML=a
              },1000)
        })
        btn2.addEventListener("click",function(){
              clearInterval(time)
        })

2.2.3 定时器小问题

首先创建定时时候需要给一个标识符,以便清除(标识符)
比如:
    var time=setTimeout(函数,延迟毫秒)  这个time就是一个标识符
定时器叠加问题:
    多次调用定时器,他的效果会叠加,且通过清除定时器并不能停下
    原因:
        因为多次调用的这个标识符(time)的值是不同的,
        而clearTimeout只能清除最后一次的定时器
    解决方案:
        1.在开启定时器的时候,先进行定时器关闭
        2.使用开关思想

2.3 location(window提供的,用于获取窗口url)

URL:协议://主机:端口/路径? 参数1=值1 & 参数2=值2
     http://localhost:8080/close?name="斐乐"
location.href        获取整个url
location.host        返回主机
location.port        返回端口
location.search      返回参数
location.pachname    返回路径     

2.4 滚动条事件

onscroll         滚动条开始滚动时触发
例:
     window.addEventListener("scroll",function(){
      // 获取滚动条滚动距离
      console.log(document.documentElement.scrollTop);
})

2.5 js执行机制

js是一个单线程
分为同步和异步
异步:定时器(setInerval),普通事件,ajax等
执行流程:
    先同步,后异步
    先在主线程进行同步任务,把异步放在一个消息队列中,
    等同步任务执行完毕,再把异步放到主线程执行