首页 > 解决方案 > JavaScript/浏览器中的事件处理

问题描述

最近在琢磨浏览器的渲染风格,决定试试这个简单的代码:

const btn = document.getElementById('btn');

btn.addEventListener('click', () => {
  console.log('button clicked');
});

btn.click();
console.log('after click');
  <button id="btn">Button</button>

令我惊讶的是,控制台在“点击后”之前打印了“点击按钮”。我认为点击处理程序btn将异步执行,但似乎并非如此。所以有几个问题:

  1. 不是通过事件循环处理点击处理程序吗?
  2. 如果不是,那么这段代码如何同步运行?JS 在没有“中断”的情况下执行,这意味着所有回调都应该在当前代码运行完成后运行(并且点击处理程序一个回调)。
  3. 除了与 AJAX 相关的事件处理程序之外,所有事件处理程序是否同步运行?

标签: javascripthtmlbrowser

解决方案


推荐阅读