JS入门到进阶知识总结(四)

简介: JS入门到进阶知识总结(四)

8.常用的键盘事件

事件除了使用鼠标触发,还可以使用键盘触发.

20210306030236541.png

注意: onkeypress 和前面2个的区别是,它不识别功能键,比如左右箭头,shift 等。

键盘事件对象

20210306030358485.png

注意: onkeydown 和 onkeyup不区分字母大小写,onkeypress 区分字母大小写。


六.BOM对象


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

对象是 window。

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

DOM和BOM比较


20210306110333864.png


1.BOM的构成

BOM 比 DOM 更大,它包含 DOM。


20210306110425358.png

window 对象是浏览器的顶级对象,它具有双重角色。


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

它是一个全局对象。定义在全局作用域中的变量、函数都会变成 window 对象的属性和方法。

在调用的时候可以省略 window,前面学习的对话框都属于 window 对象方法,如 alert()、prompt() 等。


2.window 对象的常见事件

1.窗口加载事件

window.onload 是窗口 (页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS

文件等), 就调用的处理函数。


 window.onload = function(){}
或者
window.addEventListener("load",function(){});

注意:


有了 window.onload 就可以把 JS 代码写到页面元素的上方,因为 onload 是等页面内容全部加载完毕, 再去执行处理函数。

window.onload 传统注册事件方式 只能写一次,如果有多个,会以最后一个 window.onload 为准。

如果使用 addEventListener 则没有限制

补充:


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

DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。

2.调整窗口大小事件

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

window.onresize = function(){}
window.addEventListener("resize",function(){});

注意:


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

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


3.两种定时器


window 对象给我们提供了 2 个非常好用的方法-定时器。


setTimeout()

setInterval()

1.setTimeout()方法

window.setTimeout(调用函数, [延迟的毫秒数]);

setTimeout() 方法用于设置一个定时器,该定时器在定时器到期后执行调用函数。

注意:


window 可以省略。

这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名()'三种形式。第三种不推荐

延迟的毫秒数省略默认是 0,如果写,必须是毫秒。

因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。


window.setTimeout(调用函数, [延迟的毫秒数]);
window.clearTimeout(timeoutID)//取消了先前通过调用 setTimeout() 建立的定时器。

setTimeout() 这个调用函数我们也称为回调函数 callback

普通函数是按照代码顺序直接调用。而这个函数,需要等待时间,时间到了才去调用这个函数,因此称为回调函数。


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

我们学习过的 element.onclick = function(){} 或element.addEventListener(“click”, fn); 里面的 函数也是回调函数。

2.setInterval() 定时器

window.setInterval(回调函数, [间隔的毫秒数]);
window.clearInterval(intervalID);//停止 setInterval() 定时器

setInterval() 方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。

注意:


window 可以省略。

这个调用函数可以直接写函数,或者写函数名或者采取字符串 ‘函数名()’ 三种形式。

间隔的毫秒数省略默认是 0,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。

因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。

第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次。

补充:关于this


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

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

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


4.JS执行队列

…此处省略

5.location 对象


window 对象给我们提供了一个 location 属性用于获取或设置窗体的 URL,并且可以用于解析 URL 。 因为这个属性返回的是一个对象,所以我们将这个属性也称为 location 对象。


1.URL

统一资源定位符 (Uniform Resource Locator, URL) 是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL 的一般语法格式为:


protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link

20210306115553810.png


2.location 对象的属性


20210306115630456.png


重点记住: href 和 search

3.location 对象的方法

20210306115712321.png


6.history 对象

window 对象给我们提供了一个 history 对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的 URL。


20210306115817547.png


七.PC端网页特效

1. 元素偏移量 offset 系列


offset 翻译过来就是偏移量, 我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

获得元素距离带有定位父元素的位置

获得元素自身的大小(宽度高度)

注意: 返回的数值都不带单位

offset 系列常用属性:


20210306120419845.png

offset 与 style 区别

20210306150528483.png

offset 翻译过来就是偏移量, 我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。

  • 获得元素距离带有定位父元素的位置
  • 获得元素自身的大小(宽度高度)

20210306151952934.png


2. 元素可视区 client 系列

client 翻译过来就是客户端,我们使用 client 系列的相关属性来获取元素可视区的相关信息。通过 client 系列的相关属性可以动态的得到该元素的边框大小、元素大小等。


202103061528139.png

client 翻译过来就是客户端,我们使用 client 系列的相关属性来获取元素可视区的相关信息。通过 client 系列

的相关属性可以动态的得到该元素的边框大小、元素大小等。

20210306152858322.png

3. 元素滚动 scroll 系列

scroll 翻译过来就是滚动的,我们使用 scroll 系列的相关属性可以动态的得到该元素的大小、滚动距离等。

20210306153333772.png

如图:

20210306153420735.png

页面被卷去的头部

如果浏览器的高(或宽)度不足以显示整个页面时,会自动出现滚动条。当滚动条向下滚动时,页面上面被隐藏

掉的高度,我们就称为页面被卷去的头部。滚动条在滚动时会触发 onscroll 事件。

三大系列总结

20210306153854793.png

他们主要用法:


offset系列 经常用于获得元素位置 offsetLeft offsetTop

client 经常用于获取元素大小 clientWidth clientHeight

scroll 经常用于获取滚动距离 scrollTop scrollLeft

注意页面滚动的距离通过 window.pageXOffset 获得






相关文章
|
1天前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
|
14小时前
|
缓存 JavaScript 前端开发
JavaScript进阶 - Web Workers与Service Worker
【7月更文挑战第4天】JavaScript的Web Workers和Service Worker增强了Web性能。Web Workers处理后台多线程,减轻主线程负担,但通信有开销,受同源策略限制。Service Worker则用于离线缓存和推送通知,需管理其生命周期、更新策略,并确保安全。两者都带来了挑战,但也极大提升了用户体验。通过理解和优化,开发者能构建更高效、安全的Web应用。
|
2天前
|
存储 前端开发 安全
JavaScript进阶 - 浏览器存储:localStorage, sessionStorage, cookies
【7月更文挑战第2天】探索Web存储:localStorage持久化,sessionStorage会话限定,cookies则伴随HTTP请求。了解它们的特性和限制,如localStorage的5MB容量限制、跨域问题,sessionStorage的生命周期,及cookies的安全与带宽消耗。使用时需权衡安全、效率与应用场景。示例代码展示存储与检索方法。
|
3天前
|
设计模式 前端开发 JavaScript
JavaScript进阶 - JavaScript设计模式
【7月更文挑战第1天】JavaScript设计模式增进代码复用和维护性。单例模式确保唯一实例,用闭包防止命名冲突和控制状态访问。观察者模式实现一对多依赖,通过解绑避免内存泄漏。工厂模式封装对象创建,适度使用避免复杂度。装饰者模式动态添加行为,保持简洁以保可读性。理解模式的优缺点,灵活应用,提升代码质量。
|
3天前
|
SQL 前端开发 JavaScript
前端三剑客之JavaScript基础入门
前端三剑客之JavaScript基础入门
|
8天前
|
XML JSON 前端开发
JavaScript入门宝典:核心知识全攻略(下)
JavaScript入门宝典:核心知识全攻略(下)
|
8天前
|
JavaScript 前端开发 UED
JavaScript入门宝典:核心知识全攻略(上)
JavaScript入门宝典:核心知识全攻略(上)
|
9天前
|
存储 JSON 前端开发
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
|
13天前
|
JavaScript 前端开发
JavaScript进阶-Class与模块化编程
【6月更文挑战第21天】**ES6引入Class和模块化,提升JavaScript的代码组织和复用。Class是原型机制的语法糖,简化面向对象编程。模块化通过`import/export`管理代码,支持默认和命名导出。常见问题包括`this`指向和循环依赖。理解这些问题及避免策略,能助你写出更高效、可维护的代码。**
|
13天前
|
JavaScript 前端开发 测试技术
JavaScript进阶-正则表达式基础
【6月更文挑战第21天】正则表达式是处理字符串的利器,JavaScript中广泛用于搜索、替换和验证。本文讲解正则基础,如字符匹配、量词和边界匹配,同时也讨论了常见问题和易错点,如大小写忽略、贪婪匹配,提供代码示例和调试建议。通过学习,开发者能更好地理解和运用正则表达式解决文本操作问题。