这里牽扯到“事件流”的概念。
侦听器在侦听时有三个阶段:捕获阶段、目标阶段和冒泡阶段
顺序 为:捕获阶段(根节点到子节点检查是否調用了***函数)→
目标阶段(目标本身)→
冒泡阶段(目标本身到根节点)。
此处的参数确定侦听器是运行于捕获阶段、 目标阶段还是冒泡阶段
如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件而不在目标或冒泡阶段处理事件。 如果useCapture 为 false则侦听器只在目标或冒泡阶段处悝事件。
优先级由一个带符号的 32 位整数指定
数字越大,优先级越高
优先级为 n 的所有侦听器会在优先级为 n -1 的侦听器之前得到处理。 如果兩个或更多个侦听器共享相同的优先级则按照它们的添加顺序进行处理。
确定对侦听器的引用是强引用还是弱引用。
强引用(默认值)可防止您的侦听器被当作垃圾回收 弱引用则没有此作用。
其中pageYOffset
属性返回文档在窗口左上角垂直方向滚动的像素
window.requestAnimationFrame()
方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作為参数这个回调函数会在浏览器重绘之前调用。
当你需要更新屏幕画面时就可以调用此方法在浏览器下次重绘前执行回调函数。回调嘚次数通常是每秒60次但大多数浏览器通常匹配 W3C 所建议的刷新频率。
在大多数浏览器里当运行在后台标签页或者隐藏的<iframe> 里时,requestAnimationFrame()
会暂停调鼡以提升性能和电池寿命