web学习---JavaScript---笔记(三)

BOM

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

BOM比DOM更大

在这里插入图片描述

window对象

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

  1. 它是JS访问浏览器窗口的一个接口
  2. 它是一个全局对象。定义在全局作用域中的变量、函数都会变成window对象的属性和方法

原来,JS需要写在元素后面,因为代码是从上而下执行的
现在,有了window可以将JS写在元素前面

使用:window.onload = function(){},其实窗口(页面)加载事件,当文档内容完全加载完成会触发该事件,调用的处理函数

	<body>
		<script type="text/javascript">
			window.onload = function(){
				var btn = document.querySelector('button');
				btn.onclick = function(){
					alert("弹窗");
				}
			}
		</script>
		<button type="button">按钮</button>
	</body>

此时,script标签可以写在任意地方,即使是head标签也可以

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

而使用window.addEventListener则没有限制个数

	<body>
		<script type="text/javascript">
			window.addEventListener('load', function(){
				var btn = document.querySelector('button');
				btn.onclick = function(){
					alert("弹窗1");
				}
			})
			
			window.addEventListener('load', function(){
				alert("弹窗2");
			})
		</script>
		<button type="button">按钮</button>
	</body>

则可以写多个

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

该方法在DOM元素加载完就可以执行
而window.load必须等页面所有内容(包括DOM元素、图片、css等)加载完毕才执行,没有上面这个方法快

调整窗口大小事件

当窗口大小发生变化时,就会调用:

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

定时器

window对象提供了两个定时器:

  • setTimeout()
  • setInterval()

setTimeout()定时器

window.setTimeout(调用函数, [延迟的毫秒数]);
setTimeout(function(){})window可省略;延迟时间也可以省略,省略代表0,立即执行

setInterval()定时器

window.setInterval(调用函数, [延迟的毫秒数]);//每隔一段时间,就去调用一次
setInterval(function(){})window可省略

setTimeout()停止定时器

window.clearTimeout(timeout ID)window可省略,timeout ID就是前面的定时器,赋值给一个变量得来的
window.clearInterval(timeout ID)window可省略,timeout ID就是前面的定时器,赋值给一个变量得来的

JS队列

JS是单线程,同一个时间只能做一件事

同步任务:都在主线程上执行
异步任务:JS的异步是通过回调函数实现的

一般而言,异步任务有以下三种:

  1. 普通事件,如click、resize等
  2. 资源加载,如load、error等
  3. 定时器
    异步任务相关 回调函数 添加到 任务队列中(任务队列也称为消息队列)

JS执行机制

  1. 先执行 执行栈 中的同步任务
  2. 遇到异步任务放入任务队列中
  3. 执行栈中的所有同步任务执行完毕,系统按次序读取任务队列中的异步任务,然后执行

location对象

window对象提供了location属性,用于获取或设置 窗体的URL,并且可以用于解析URL。
因为这个属性返回的是一个对象,因此也被称为location对象
在这里插入图片描述

navigator 对象

navigator对象包含有关浏览器的信息,最常用的是userAgent,该属性可以返回由客户机发生服务器的user-agent头部的值
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36

history对象

history.back()后退
history.forward()前进
history.go(参数)n前进n个界面,-n后退n个界面


PC端网页特效

元素偏移量offset系列

offset概述

offset其实就是偏移量,使用offset系列相关属性可以 动态的 得到该元素的位置(偏移)、大小等
可以获取:

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

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

在这里插入图片描述

offset获取元素大小位置
style更改元素大小位置

例子:获取鼠标点击时,在div里面的坐标

获取鼠标在页面中的坐标(e.pageX, e.pageY)
获取盒子在页面中的坐标(e.offsetLeft, e.offsetRight)

例子:鼠标拖拽元素
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" lang="en">
		<title></title>
		
		<style type="text/css">
			
			.box{
				position: absolute;
				background-color: pink;
				width: 200px;
				height: 200px;
			}
		</style>
		
	</head>
	<body>
		<div class="box"></div>
		<script type="text/javascript">
			var box = document.querySelector('.box');
			
			//在鼠标按下的时候,获取鼠标的x,y
			document.addEventListener('mousedown', function(e){
				
				var mouseX = e.pageX - box.offsetLeft;
				var mouseY = e.pageY - box.offsetTop;
				
				var move = function(e){
					box.style.left = e.pageX - mouseX + 'px'
					box.style.top = e.pageY - mouseY + 'px'
				}
				
				//移动,和移除,都是在点击的情况下执行的
				
				//在鼠标移动的时候,box也移动
				document.addEventListener('mousemove', move);
				
				//在鼠标放开的时候,移除
				//首先,监听鼠标不点击
				document.addEventListener('mouseup', function(){
					//在不点击的时候,移除move监听
					document.removeEventListener('mousemove', move);
				})
			});
		</script>
	</body>
</html>

元素偏移量client系列

通过client系列的相关属性,动态的得到该元素的 边框大小、元素大小
在这里插入图片描述
立即执行函数:
(function() {})()

(function(){}());

带参数:

(function(a, b){
	console.log(a + b);
})(1, 2)

元素偏移量scroll系列

利用该相关属性,可以动态的得到该元素的大小、滚动距离等

在这里插入图片描述
mouseover鼠标经过自身、子盒子都会触发
mouseenter鼠标经过自身会触发,经过子盒子不会触发,其不会冒泡。离开的时候,搭配mouseleave,也不会冒泡

动画函数封装

动画实现原理

核心原理:通过定时器setInterval()不断移动盒子位置


未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pdfjs-annotation是PDF.js的一个功能模块,用于处理和展示PDF文档中的注释。PDF.js是一个开源的JavaScript库,用于在浏览器中渲染和呈现PDF文档。 pdfjs-annotation模块提供了一些API和功能,使用户可以在PDF文档中添加、编辑和查看注释。它支持不同类型的注释,如文本注释、高亮注释、批注、标记等。用户可以使用这些注释工具在PDF文档上进行标记、批注和记笔记,以便在共享或查看时更好地理解文档内容。 使用pdfjs-annotation,用户可以通过简单的JavaScript代码实现与注释相关的操作。例如,可以使用API创建一个新的注释,设置注释的坐标、颜色、样式等属性,然后将注释添加到PDF页面上。还可以使用API获取已添加的注释列表,以便在界面中显示或编辑已有的注释。此外,也可以使用一些工具函数来管理注释的显示和隐藏。 pdfjs-annotation不仅可以用于个人使用,还可以嵌入到网页或应用程序中,以提供更好的文档交互和协作功能。用户可以基于pdfjs-annotation进行扩展和定制,以满足特定的需求。 总而言之,pdfjs-annotation是一个功能强大的PDF注释模块,它为用户提供了方便的工具和API,用于在PDF文档中添加、编辑和查看注释。它可以帮助用户更好地理解和共享PDF文档,并提供更好的文档交互和协作功能。 ### 回答2: pdfjs-annotation是一个基于PDF.js库的扩展,用于在浏览器中显示和管理PDF文件的注释和标记。 PDF.js是一个由Mozilla开发的JavaScript库,用于在Web页面中渲染PDF文档。它提供了一种在浏览器中显示PDF文件的便捷方式,无需依赖任何插件或附加软件。 pdfjs-annotation利用PDF.js的渲染功能,并添加了注释和标记的功能。用户可以在PDF文件中添加各种类型的注释,例如箭头、文字、高亮、标签等。这些注释可以用于标记重要内容、进行批注、引用其他文档等。 同时,pdfjs-annotation还提供了管理注释的功能。用户可以选择编辑、删除、移动、复制、粘贴和旋转注释,以便根据需要对其进行调整。此外,还可以通过搜索和过滤功能查找特定类型或内容的注释。 pdfjs-annotation还支持与其他用户共享和协作。用户可以导出和导入注释,便于与其他人共享和查看。在多人协作中,用户可以实时更新和同步注释,以便进行实时讨论和反馈。 总结来说,pdfjs-annotation是一个强大的工具,扩展了PDF.js库的功能,使用户能够在浏览器中方便地添加、管理和共享PDF文件的注释和标记。无需安装任何额外的软件,用户就可以实现多种注释操作,并与其他人进行协作和共享。 ### 回答3: pdfjs-annotation是一个基于pdf.js开发的一个注释功能库。pdf.js是Mozilla开发的一款基于HTML5技术的开源PDF阅读器,而pdfjs-annotation则是在pdf.js的基础上增加了注释功能。 pdfjs-annotation可以让用户在阅读PDF文件的同时,对文档进行标注和注释。它提供了多种注释工具,比如文本框、高亮、下划线、删除线、批注等。用户可以根据需要选择合适的工具,在文档中添加注释,以便在以后的阅读或共享中更好地理解和交流。 通过pdfjs-annotation,用户可以方便地在PDF文档上划重点、做笔记、提出问题或者标记重要内容。这些注释可以在保存PDF文件时一并保存,也可以单独导出为注释文件或者文字文件,方便共享和查阅。 此外,pdfjs-annotation还具备一些其他功能。例如,它可以实现对注释的编辑、删除和复制等操作,方便用户按需对注释进行管理;它还支持对注释进行搜索和筛选,可以快速定位和浏览注释内容。 总之,pdfjs-annotation是一个功能强大、易于使用的PDF文档注释工具。它为用户提供了丰富的注释工具和便捷的操作方式,帮助用户更好地理解和交流PDF文档的内容。无论是个人阅读还是团队协作,pdfjs-annotation都能提供便利,并提升文档的分析和分享效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值