上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

BOM简介

guduadmin01小时前

1.1 常用的键盘事件

1.1.1 键盘事件

键盘事件触发条件
onkeydown按键被按下时触发
onkeypress按键被按下时触发
onkeyup按键被松开时触发

注意:addEventListener事件不需要加on

1.1.2 键盘事件对象

使用keyCode属性判断用户按下哪个键

键盘事件对象<属性>说明
keyCode返回该键的ASCII值

注意:

  1. onkeydown和onkeyup 不区分字符大小写,onkeypress区分字符大小写

1.2 BOM

1.2.1 什么是BOM

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

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

BOM 缺乏标准,JavaScript 语法的标准化组织是 ECMA,DOM 的标准化组织是 W3C。

DOMBOM
文档对象模型浏览器对象模型
DOM把文档看作一个对象BOM把浏览器当作一个对象
DOM顶层对象是documentBOM顶层对象是window
DOM学习的是如何操作页面的元素BOM学习的是浏览器窗口交互的的对象
DOM是W3C标准规范BOM是浏览器厂商在各自浏览器上定义的,兼容性差

1.2.2 BOM的构成

BOM 比 DOM 更大,它包含 DOM。

BOM简介,image-20230301113414030,第1张

1.2.3 window

  1. window对象是浏览器的顶级对象

  2. 它是JS访问浏览器窗口的一个接口

  3. 它是一个全局对象,之前学过的alert()、prompt()、log();等都属于window

1.2.4 window对象常见事件

窗口/页面加载事件
第1种
  1. window.onload 是窗口 (页面)的加载事件,当文档内容完全加载完成会触发该事件(包括图像、CSS、JS 文件等)就调用的处理函数。

    可以认为是同步的。

  2. 语法:

    1. window.onload = function( ){ }

    2. window.addEventListener("load",function( ){ });

  3. 注意:

    1. window.onload可以把JS代码写到页面元素的上方,因为onload是等页面所有内容加载完才回去执行处理函数

第2种
  1. DOMContentLoaded 事件触发时,仅当DOM元素结构加载完成执行,不包括CSS,JS,图像等等。

  2. 语法

    1. document.addEventListener('DOMContentLoaded',function(){ });

  3. 注意:

    1. 如果页面的图片很多的话, 从用户访问到onload触发可能需要较长的时间, 交互效果就不能实现,必然影响用户的体验,

    2. 此时用 DOMContentLoaded 事件比较合适,可以认为DOMContentLoaded是异步的


  
  


  

调整窗口大小事件
  1. window.onresize 是调整窗口大小加载事件, 当触发时就调用的处理函数。

  2. 语法:

    1. window.onresize = function(){}

    2. window.addEventListener('resize', function() { } )

  3. 注意:

    1. 只要窗口大小发生像素变化,就会触发这个事件。

    2. 我们经常利用这个事件完成响应式布局。 window.innerWidth 当前屏幕的宽度


  
  

1.2.5 定时器

  • setTimeout()

  • setInterval()

    setTimeout() 炸弹定时器
    1. 开启定时器,时间到了就执行,只执行一次。

    2. 语法:

      1. window.setTimeout( function( ){ },[延迟毫秒数])

    3. 注意:

      1. window可以省略

      2. 延迟毫秒数默认是0,如果写必须是毫秒

    普通函数是按照代码顺序直接调用。

    回调,就是回头调用的意思。上一件事干完,再回头再调用这个函数。

    例如:定时器中的调用函数,事件处理函数,也是回调函数。

    停止定时器
    1. clearTimeout()方法取消了先前通过setTimeout()建立的定时器

    2. 语法:

      1. window.clearTimeout(timeoutID)

    3. 注意:

      1. window可以省略

      2. 创建定时器时候用添加一个标识符

      3. timeoutID是定时器标识符

    
      
      
    
    setInterval() 闹钟定时器
    1. 该方法重复调用一个函数,每隔指定时间就工作一次。

    2. 语法:

      1. window.setInterval(function( ) { }, [间隔毫秒数] )

    3. 注意:

      1. window可以省略

      2. 默认间隔时间是0,如果写就必须是毫秒

    停止定时器
    1. clearInteval()方法取消了先前通过clearInteval()建立的定时器

    2. 语法:

      1. window.clearInterval(intervalID);

    3. 注意:

      1. window可以省略

      2. intervalID就是定时器的标识符

    
      
      
      
    
    定时器叠加问题

    如果一直点击定时器,会发现无法关闭定时器

    
      
      
      
    

    1.2.6 this指向问题

    1. this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,

    2. 一般情况下this的最终指向的是那个调用它的对象。

    现阶段,我们先了解一下几个this指向

    1. 全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window)

    2. 方法调用中谁调用this指向谁

    3. 构造函数中this指向构造函数的实例

    
      
      
    

    1.2.7 location对象

    什么是 location 对象

    window对象给我们提供了一个location属性,用于获取或设置窗体的URL,并可以解析URL

    URL
    1. 统一资源定位符,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL

    2. 语法:127.0.0.1

      1. Request URL: 协议://主机:端口/路径?参数1=值1 & 参数2 =值2

      2. http://localhost:19002/v2/goodstype/listByPage?page=1&rows=10

        组成说明
        protocolhttp协议http
        host主机,域名localhost
        port端口19002
        path接口路径,由多个/组成v2/goodstype/listByPage
        params参数,用&分隔page=1&rows=10
    location 对象的属性
    location对象属性返回值
    location.href获取整个URL
    location.search返回参数
    location.pathname返回路径
    location.host返回主机
    location.port返回端口号

    重点掌握href和search

    1.3 JS执行机制

    1.3.1 JS 是单线程

    单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。

        这样所导致的问题是: 如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

    1.3.2 同步任务和异步任务

    同步

    前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。

    异步

    你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。

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

    同步任务指的是:

        在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;

    异步任务指的是:

        不进入主线程、而进入”任务队列”的任务,当主线程中的任务运行完了,才会从”任务队列”取出异步任务放入主线程执行。

网友评论

搜索
最新文章
热门文章
热门标签