javascript - 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
将异步执行,但似乎并非如此。所以有几个问题:
- 不是通过事件循环处理点击处理程序吗?
- 如果不是,那么这段代码如何同步运行?JS 在没有“中断”的情况下执行,这意味着所有回调都应该在当前代码运行完成后运行(并且点击处理程序是一个回调)。
- 除了与 AJAX 相关的事件处理程序之外,所有事件处理程序是否同步运行?
解决方案
推荐阅读
- php - 测试未链接到任何路由的控制器方法
- c# - 试图将整个窗口绑定到用户控件
- ubuntu - 无法在 Ubuntu 16.04 中将 .pem 证书添加为受信任的根证书
- c# - 将字符串解析为 Xelement 时如何添加命名空间?
- sql - #1052 - 字段列表中的列“日期”不明确
- nativescript - 原生脚本 | 无法运行 Android 应用:请通过更新 google-services 插件的 11.4.0 版本来修复版本冲突
- oracle - oracle 中的更新语句失败 - sql 命令未正确结束
- angular - kendo-scheduler 的 base-edit.service 中的 source 做了什么?
- c# - 创建复杂的自动映射器
- macros - 长生不老药中的语言结构与宏