JavaScript——WEBAPIS_BOM对象以及js执行机制

1.常见的键盘事件

1.1 键盘事件

以下通过代码的形式来表达,这三种键盘事件,我们使用事件监听的方式触发事件

        // 常用的键盘事件
        //1. keyup 按键弹起的时候触发 
        document.addEventListener('keyup', function() {
            console.log('我弹起了');
        })

        //3. keypress 按键按下的时候触发  不能识别功能键 比如 ctrl shift 左右箭头啊
        document.addEventListener('keypress', function() {
                console.log('我按下了press');
        })
        //2. keydown 按键按下的时候触发  能识别功能键 比如 ctrl shift 左右箭头啊
        document.addEventListener('keydown', function() {
                console.log('我按下了down');
        })
        // 4. 三个事件的执行顺序  keydown -- keypress -- keyup

注意一下他们之间的区别

1.2 键盘事件的对象

键盘事件的属性,主要是KeyCode,放回该键的ASCII值,注意啊这个事件对象e
实例代码:

        // 键盘事件对象中的keyCode属性可以得到相应键的ASCII码值
        document.addEventListener('keyup', function(e) {
            console.log('up:' + e.keyCode);
            // 我们可以利用keycode返回的ASCII码值来判断用户按下了那个键
            if (e.keyCode === 65) {
                alert('您按下的a键');
            } else {
                alert('您没有按下a键')
            }
        })
        document.addEventListener('keypress', function(e) {
            // console.log(e);
            console.log('press:' + e.keyCode);
        })

2.BOM

2.1 基础知识知识

BOM是浏览器对象模型,BOM 缺乏标准,JavaScript 语法的标准化组织是 ECMA,DOM 的标准化组织是 W3C,BOM 最初是Netscape 浏览器标准的一部分。兼容性比较差。

DOM的顶级对象是document,BOM 顶级对象是window

2.2 BOM对象的组成部分

JavaScript——WEBAPIS_BOM对象以及js执行机制_第1张图片

它是顶级对象,有两重角色,

  1. js访问浏览器接口的一个接口
  2. 全局对象,所有定义在其中定义的东西,都会变成它的属性和方法,调用的时候可以省去window.
  3. 它自带一个特殊属性:window.name

JavaScript——WEBAPIS_BOM对象以及js执行机制_第2张图片

2.3 window对象的常见事件

接下来,我们来讲一下它的常见事件,

  1. 页面(窗口)加载事件,有了它我们就可以把script标签放到前面去了。他有两种
//第一种
window.onload = function(){}或者
window.addEventLisstener("load",function(){});
// 第二种
document.addEventListener('DOMcontentLoad',function(){})
//他们的区别,第一种是在页面全部加载完全之后调用,第二种仅DOM加载完全之后调用,不包括土拍你 样式表等加载完毕。IE9以上才支持,有兼容性问题,
//第二种比较常用。交互效果比较流畅
  1. 调整创建大小事件
winidow.onresize = function(){}
window.addEventListner('resize',function(){});

我们经常用它完成一些相应式布局


    // 注册页面加载事件
        window.addEventListener('load', function() {
            var div = document.querySelector('div');
        	// 注册调整窗口大小事件
            window.addEventListener('resize', function() {
                // window.innerWidth 获取窗口大小
                console.log('变化了');
                if (window.innerWidth <= 800) {
                    div.style.display = 'none';
                } else {
                    div.style.display = 'block';
                }
            })
        })

2.4 定时器(两种)

这个非常重要!!!有两种,

window.setTimeout(调用函数,延迟事件(毫秒计ms)),其中哈,这个传入的函数也叫回调函数
window.setInterval()也是一样的

代码示例:

  1. 使用定时器
    

  1. 拿掉定时器


  
    

2.5 this指向问题

现阶段我们需要理解的就是在普通函数里面this指向window。

在方法中,指向调用者

2.6 location对象

location对象,可以解析,地址栏里面的一些url参数,这个在后期开发很重要!

  1. 关于http还有URl请百度,一些吧
  2. 这里是location对象的属性,还有常见的方法
    JavaScript——WEBAPIS_BOM对象以及js执行机制_第3张图片

href和search很重要!!!
JavaScript——WEBAPIS_BOM对象以及js执行机制_第4张图片

代码示例

# 1.事件到达自动跳转页面
  
    
# 2. 从地址中拿参数

2.7 navigator对象

这个包含浏览器的所有信息

  1. 属性太多太多了,常见的常用的有哪些,userAgent,这个里面包含了很多信息,你可以去翻阅文档

代码实例-判断用户拿什么访问的网站,从而调用不同的地址去访问

if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
    window.location.href = "";     //手机
 } else {
    window.location.href = "";     //电脑
 }

2.8 history对象

在这里,仅仅是一些简要的说明,

3.JS执行的机制,还有js的线程问题!

  1. js的任务有分两种
JS中所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。

同步任务指的是:
	在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;
异步任务指的是:
	不进入主线程、而进入”任务队列”的任务,当主线程中的任务运行完了,才会从”任务队列”取出异步任务放入主线程执行。
  1. 异步任务有?
普通的时间,资源加载load ,定时器,还有回调函数,当然了还有一些,你可以去MDN文档查阅
  1. 执行顺序,
    先同步,再异步。对于异步任务的执行顺序,还得看实际的代码。去分析。
    但是有一点是可以确定的,在同步任务的队列中,执行完同步任务,js会回去看任务队列里面的异步任务,如果有,就拿到执行栈中去执行。

你可能感兴趣的:(JavaScript——WEBAPIS_BOM对象以及js执行机制)