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 获得






相关文章
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
232 2
|
10天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
10天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
17 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
19天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
50 10
|
16天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
2月前
|
JavaScript 前端开发 小程序
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
一小时入门Vue.js前端开发
|
1月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
1月前
|
自然语言处理 JavaScript 前端开发
JavaScript高级——ES6基础入门
JavaScript高级——ES6基础入门
22 1
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
417 1
|
1月前
|
Web App开发 JSON JavaScript
深入浅出:Node.js后端开发入门与实践
【10月更文挑战第4天】在这个数字信息爆炸的时代,了解如何构建一个高效、稳定的后端系统对于开发者来说至关重要。本文将引导你步入Node.js的世界,通过浅显易懂的语言和逐步深入的内容组织,让你不仅理解Node.js的基本概念,还能掌握如何使用它来构建一个简单的后端服务。从安装Node.js到实现一个“Hello World”程序,再到处理HTTP请求,文章将带你一步步走进Node.js的大门。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往后端开发新世界的大门。