javascript - Javascript 如何控制事件

标签 javascript events

假设我有一个使用 onmouseover 事件的简单代码

    <div onmousemove="myMoveFunction()">
      <p id="demo">I will demonstrate onmousemove!</p>
    </div>

(来自w3school)

我想问一下,Javascript如何知道鼠标在那个div上?或者说当我们使用onclick时,Js如何知道按钮已经被点击了。是否有自动事件监听器?或者是否有任何循环在后台持续控制事件的变化? 请帮助我,我很困惑。

任何阅读链接也可以

最佳答案

浏览器负责收集页面上出现的事件。当为给定操作添加事件监听器时,监听器的回调将添加到事件循环中。事件循环是一个无限循环,不断检查是否有事情要做(以 CPU 优化的方式)。事件循环有两个主要任务:

  • 如果 DOM 或 CSSOM 发生更改,则渲染页面
  • 当某些特定操作发生时执行回调

重要的是要知道 JavaScript 是单线程的,这意味着如果有一个长时间运行的回调,浏览器将无法重新呈现页面,因此页面就会卡住。

了解幕后情况的另一种方法是打开 Chrome 开发工具并转到性能面板。您可以在那里准确地找到与页面交互时发生的情况: enter image description here

有几种方法可以添加事件监听器:

  • 在 html 中使用 on[eventname]=action ,即<div onmousemove="myMoveFunction()">
  • 在 javascript 中,通过将函数分配给 on[eventname] 属性,即 windows.onload = () => alert("hello");
  • 在 javascript 中使用 addEventListener()方法,即element.addEventListener("click", () => alert("hello"));

如果您想了解有关事件循环的更多信息,这里有一些很好的资源:

还有一个非常好的免费类(class),它解释了很多有关浏览器如何工作的内容,最重要的是向您展示如何提高网站的性能: Browser Rendering Optimization

关于javascript - Javascript 如何控制事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52308133/

相关文章:

javascript - 如何根据 Json 响应更改 jqvmap 上的状态颜色?

javascript - JQuery 元素缺少 detach() 方法

java - 是否可以让 Spring ApplicationListener 监听 2 种或更多类型的事件?

java - Json Web服务数据检索

javascript - 如何从 Angular 中的静态指令模板访问隔离范围属性?

javascript - 需要 Canvas 模糊工具

java - 未使用removeEventListener从任何组件中删除ZK事件监听器

java - Swing 中的鼠标和键盘监听器

javascript - 如何可靠地获取 Google Analytics 生成的 session ID?

c++ - 使用匿名或 lambda 函数连接到 Boost Signals2 信号