首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 编程精解 中文第三版 十五、处理事件

事件处理器 想象一下,有一个接口,若想知道键盘上是否有一个键是否被按下,唯一的方法是读取那个按键的当前状态。为了能够响应按键动作,你需要不断读取键盘状态,以在按键被释放之前捕捉到按下状态。...事件对象 虽然目前为止我们忽略了它,事件处理器函数作为对象传递:事件(Event)对象。这个对象持有事件的额外信息。例如,如果我们想知道哪个鼠标按键被按下,我们可以查看事件对象的which属性。...例如,如果一个节点中包含了很长的按钮列表,比较方便的处理方式是在外部节点上注册一个点击事件处理器,并根据事件的target属性来区分用户按下了哪个按钮,而不是为每个按钮都注册独立的事件处理器。...例如,如果您在按下某个按键时向 DOM 添加按钮,并且在释放按键时再次将其删除,则可能会在按住某个按键的时间过长时,意外添加数百个按钮。 该示例查看了事件对象的key属性,来查看事件关于哪个键。...当你按下上箭头时,它应该变大(膨胀)10%,而当你按下下箭头时,它应该缩小(放气)10%。

5.6K20

js 鼠标事件总结

当监听鼠标事件时,会触发一些事件,我们可以与之交互: mousedown 按下鼠标按钮触发 mouseup 鼠标按钮被释放 click 点击事件 dblclick 双击事件 mousemove 当鼠标移动到元素上时...mouseleave 当鼠标移出一个元素时,mouseleave。类似于mouseout但不冒泡。 contextmenu 快捷菜单当快捷菜单打开时,例如用鼠标右键点击 事件重叠。...例如,在鼠标事件中,我们可以通过检查事件对象的button属性来检查哪个鼠标按钮被按下: const link = document.getElementById('my-link') link.addEventListener...button 如果有按钮,则为鼠标事件触发时按下的按钮数目(通常为0 =主按钮,1 =中按钮,2 =右按钮)。处理由单击按钮引起的事件(例如单击)。...ctrlKey 如果在事件触发时按下ctrl键,则ctrlKey为真。 metaKey 如果事件触发时按下了meta键,则metaKey true。

9.2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 Chrome DevTools 调试 JavaScript

    当你选中 click,你为所有 click 事件设置了一个基于事件的断点。 当任意节点被点击,并且该节点有一个 click 事件, DevTools 将自动暂停在该节点的 click 事件。...DevTools 打印出 “addend1”,“addend2” 和 “sum” 的值。“sum” 的值看起来很可疑。 它似乎被当做一个字符串,它应该是一个数字。 这可能是错误的原因。...其一,你可能需要手动编辑你的代码大量的调用 console.log() 。 其二,您可能不知道哪个变量与错误有关,所以您可能需要打印许多变量。...按回车。 DevTools 显示 “typeof sum:"string"”。 冒号右侧的值是您的观察表达式的结果。 ? 如预测那样,sum 被当做 string 类型 。...console.log() 的另一个替代方法是控制台。可以使用控制台来评估任意的 JavaScript 语句。 开发人员通常使用控制台在调试时覆盖变量值。

    2.4K70

    使用 Chrome DevTools 调试 JavaScript

    当你选中 click,你为所有 click 事件设置了一个基于事件的断点。当任意节点被点击,并且该节点有一个 click 事件, DevTools 将自动暂停在该节点的 click 事件。...DevTools 打印出 “addend1”,“addend2” 和 “sum” 的值。“sum” 的值看起来很可疑。它似乎被当做一个字符串,它应该是一个数字。这可能是错误的原因。...其一,你可能需要手动编辑你的代码大量的调用 console.log() 。其二,您可能不知道哪个变量与错误有关,所以您可能需要打印许多变量。...按回车。DevTools 显示 “typeof sum:"string"”。冒号右侧的值是您的观察表达式的结果。 ? 如预测那样,sum 被当做 string 类型 。...console.log() 的另一个替代方法是控制台。可以使用控制台来评估任意的 JavaScript 语句。开发人员通常使用控制台在调试时覆盖变量值。

    1.8K10

    React Native基础&入门教程:调试React Native应用的一小步

    试想一下,当你在手机屏幕按下一个按钮,处理事件的代码就可以立即在浏览器的调试工具里进行断点调试,而且每当你对代码进行修改,界面便可以完成快速地重载,省去昂长的编译时间,这会是多么提高工作效率。...同时可以看到,在上面的代码中,当按钮按下时,会调用一个打log的事件。但是打出的log在哪儿可以看到呢? 有两种方法。...这个时候,按下手机上的Test按钮,可以看到程序执行到断点停下了,这与调试网页代码是多么相似: ? 图13. 浏览器上的断点调试 不过,与调试纯网页代码有两点不同。...举个例子,就在此时,手机上该应用的界面表面上没什么反应,但是,如果你再多次按下Test按钮,事件都会被记住,到时候会挨个响应。只是现在程序断在了第一次按下按钮的时候。...我们让程序继续(如果在断点期间多次按下按钮,会有多次被断住)。 ? 图14. 浏览器控制台输出 我们按下了6次,调试工具下也显示出6次输出。

    1.2K00

    如何使用 chrome 开发者工具来调试程序以及相关技巧

    先说下这几个按钮,从左到右按顺序: 跳到下一个断点处,如果后面没有断点了的话,就会停止调试 不跳入函数内执行下一行代码,当函数内部逻辑太多或者不重要的时候,可以使用这个 向下执行一行代码,会进入函数内部...,需要理解函数内部的逻辑时候就可以使用这个 跳出当前函数,当你所在的函数内部有循环或者突然觉得这函数可以跳过,就可以使用这个 禁止所有断点,不做任何调试,一般很少用 程序运行到异常时是否中断的开关,也很少用...上面这几个按钮常用的就前面 5 个,对进行逆向 JS 时需要调试时非常重要,需要熟悉使用,当你掌握了如何去用的话,调试程序起来会得心应手。 2. watch 和 call stack ?...比如,我们在进行某个操作的时候,需要发送请求,嗯,比如点击登陆或点击链接,这些都会发送请求,如果你需要知道他们的参数的话,就可以在上面打个钩,捕捉一下。说不定会有惊喜!...这个还可以选择只捕捉指定域名的请求,但我没有用过,所以在这里就不说了,一般全部捕捉就行了,因为我们如过捕捉到没有用的请求,可以按下上面第一条所说的 第一个按钮,就会跳到下一个 xhr断点了。 4.

    78640

    单选按钮的用户体验设计

    单选按钮是表单系统的一个基本元素。它们被使用在当存在互斥的两个或多个选项列表而用户必须选择其中一个时。换句话说,点选某个尚未选中的单选按钮,之前的选择就会恢复成未选中。...一、单选按钮的名字由何而来 单选按钮的命名源自于旧式汽车中收音机用来切换频道的物理按键—当一个按钮被按下,其他的就会被弹出,留下唯一的按钮处于被选中的状态。...例如,应该避免下图中出现的很难理解第四个选项对应哪个按钮的情况: 6、使用标签作为点击区域 单选按钮本身很小,按照菲兹法则,它们很难被点击或轻拍到。...默认选项可能引导用户做出最好的决定,并提升它们在草错过程中的信心。 简单的是或否的答案。当你有一个简单的问题而用户只需回答是或否的时候,使用复选框还是正确无误的。...三、结论 当设计单选按钮时,最重要的是遵循设计标准,因为这能增强用户预测哪个选项能做什么和如何操作它。相反地,违反了标准的设计会让用户感觉到设计界面脆弱,仿佛什么事都有可能没有警告而发生。

    6.2K100

    JavaScript—事件

    当我们的鼠标点击到窗口上的按钮时,并不是鼠标的箭头真正点击到这个按钮了,而是鼠标发出了一个动作事件,然后这个事件先被传送到了操作系统的命令处理带,然后再传送到负责显示图形的图像数据层,事件到这里后图像数据层会先看哪个程序的窗口在最上面...(因为不是在最上面就没必要看了),再根据鼠标提供的X Y坐标确认点击的是哪个窗口上的按钮,接着再确认这个窗口是哪个程序。...事件委托: 这其中有一个事件委托的概念,我们需要在代码中把事件委托也可以说是注册到按钮上,这时会有一个监听器监听着这个按钮,当用户点击按钮时就会去调用委托事件中的代码,这些代码都写在函数中。...以上提到的事件只是众多事件类型中的一种点击事件,事件是有很多种类型的,例如:鼠标的单击、双击、滚轴,键盘的按键弹起、按下、长按等等,反正很多就是了,还有一些是某些元素特有的事件。...所谓焦点就是鼠标的光标的位置,例如当你在文本框输入文字时需要点击一下文本框才能输入,这就是要让文本框获得鼠标焦点。

    1.6K20

    (译)SDL编程入门(17)鼠标事件

    鼠标事件 和按键一样,SDL也有事件结构来处理鼠标事件,如鼠标运动、鼠标按钮按下和鼠标按钮释放。在本教程中,我们将制作一堆可以与之交互的按钮。 ?...; }; 这里是表示一个按钮的类,它有一个初始化的构造函数、一个位置设置器、一个事件循环的事件处理程序和一个渲染函数。...它还具有一个位置和一个精灵枚举,所以我们知道要为按钮渲染哪个精灵。...首先,我们检查进入的事件是否是一个鼠标事件,特别是鼠标运动事件(当鼠标移动时),鼠标按钮按下事件(当你点击鼠标按钮时),或鼠标按钮抬起事件(当你释放鼠标点击时)。...如果鼠标在按钮内部,我们设置的精灵是在鼠标移动时鼠标在上,鼠标按下时鼠标在下,鼠标释放时鼠标在上。

    1.6K41

    一劳永逸地搞懂 JavaScript中‘this’

    理解常规函数内部this的行为都是关于上下文的。它是关于知道在调用时哪个对象“拥有”函数。这种洞察可以防止无数的错误和挫败感,尤其是当你的JavaScript项目在复杂性上增长时。...你在一个网页上,你最喜欢的歌正在播放,有一个按钮在那里诱惑你点击它。在你知道之前,JavaScript的魔法就活了起来,事情开始发生。但你有没有想过内部工作,使这些DOM元素跳舞的隐藏的木偶线?...在这个魔法的核心是我们的好朋友:this。 主要吸引力:事件监听器 当你将一个事件监听器绑定到一个DOM元素时,你基本上是在耳语指示,告诉它,“嘿,当有人与你互动时,做这件事。”...就像按钮说,“是的,我是被点击的那个!” 情节转折:箭头函数 现在,如果你想在事件监听器中使用箭头函数,要小心。记住我们之前讨论过箭头函数从它们的周围继承 this 吗?...这不会按预期工作。 } }; person.greet(); // 输出:Hello, undefined 动态方法:当你动态地添加方法到一个对象时,确保你知道this引用的是什么。

    14310

    javascript 事件基础

    ("点击的是two"); } function clickThree() { console.log("点击的是three"); } 整体上来说,是哪个先注册,哪个先执行...4.事件类型: 4.1鼠标事件:当用户通过鼠标在页面操作时触发; click事件:在用户单击鼠标按钮或者按下回车键触发; dblclick事件:在用户双击鼠标按钮时被触发; mouseover...事件:鼠标指针在元素外部,用户将移入另一个元素的边界时触发,感觉和mouseenter事件类似; mouseout事件:用户将其移入另一个元素内被触发。...mousedown事件:在用户按下了任意鼠标按钮时被触发,不能通过键盘触发这个事件。...mouseup事件:用户释放鼠标按钮时触发; 页面上所有的元素都支持鼠标事件,除了mouseenter和mouseleave,所有鼠标事件都会冒泡,也可以被取消,而取消鼠标事件将会影响浏览器的默认行为

    95150

    前端成神之路-WebAPIs04

    04 - Web APIs 学习目标: 能够说出常用的3-5个键盘事件 能够知道如何获取当前键盘按下的是哪个键 能够知道浏览器的顶级对象window 能够使用window.onload事件...使用keyCode属性判断用户按下哪个键 // 键盘事件对象中的keyCode属性可以得到相应键的ASCII码值 document.addEventListener...码值来判断用户按下了那个键 if (e.keyCode === 65) { alert('您按下的a键'); } else...window.onresize 是调整窗口大小加载事件, 当触发时就调用的处理函数。 注意: 只要窗口大小发生像素变化,就会触发这个事件。 我们经常利用这个事件完成响应式布局。...案例:发送短信倒计时 ​ 点击按钮后,该按钮60秒之内不能再次点击,防止重复发送短信。 ?

    1.5K10

    JavaScript 事件对象

    那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等。 1.鼠标按钮 只有在主鼠标按钮被单击时(常规一般是鼠标左键)才会触发click事件,因此检测按钮的信息并不是必要的。...说明 0 表示没有按下按钮 1 表示主鼠标按钮(常规一般是鼠标左键) 2 表示次鼠标按钮(常规一般是鼠标右键) 3 表示同时按下了主、次鼠标按钮 4 表示按下了中间的鼠标按钮 5 表示同时按下了主鼠标按钮和中间的鼠标按钮...6 表示同时按下了次鼠标按钮和中间的鼠标按钮 7 表示同时按下了三个鼠标按钮 PS:在绝大部分情况下,我们最多只使用主次中三个单击键,IE给出的其他组合键一般无法使用上。...1.键码 在发生keydown和keyup事件时,event对象的keyCode属性中会包含一个代码,与键盘上一个特定的键对应。...,当几个都具有事件的元素层叠在一起的时候,那么你点击其中一个元素,并不是只有当前被点击的元素会触发事件,而层叠在你点击范围的所有元素都会触发事件。

    1.9K100

    10 个让你进入 Emacs 世界的技巧

    例如,如果你不知道如何在 Emacs 中只用键盘快捷键复制一个单词,编辑菜单的复制、剪切和粘贴选择提供了最轻松的路径。没有理由因为选择了 Emacs 而惩罚自己。...使用它的菜单,用鼠标选择区域,点击缓冲区内的按钮,不要让陌生感阻碍你的工作效率。 image.png 这些功能被内置到 Emacs 中,是因为用户在使用它们。...,键盘快捷键就可以使用了: M-x load-file ~/.emacs 紧急按钮 当你使用 Emacs 并尝试新的函数时,你一定会开始调用一些你并不想调用的东西。...如果你按几下 C-g,Emacs 的迷你缓冲区就会回到潜伏状态,弹出窗口被隐藏,你又回到了一个普通的、无聊的文本编辑器的安全状态。...每一个软件包的名称都是一个按钮,所以你可以将光标移到它上面,然后按回车键,或者直接用鼠标点击它。你可以在 Emacs 框架中出现的新窗口中阅读有关软件包的信息,然后用安装按钮来安装它。

    82220

    设计模式之命令模式-JS

    对于绘制按钮的程序员来说,他完全不知道某个按钮未来将用来做什么,可能用来刷新菜单界面,也可能用来增加一些子菜单,他只知道点击这个按钮会发生某些事情。...那么当完成这个按钮的绘制之后,应该如何给它绑定onclick事件呢?...我们很快可以找到在这里运用命令模式的理由:点击了按钮之后,必须向某些负责具体行为的对象发送请求,这些对象就是请求的接收者。但是目前并不知道接收者是什么对象,也不知道接收者究竟会做什么。...想象一下,家里有一个万能遥控器,每天回家的时候,只要按一个特别的按钮,它就会帮我们关上房间门,顺便打开电脑并登录QQ。    下面我们看看如何逐步创建一个宏命令。...一、发送者(setCommond):不关心给哪个button,以及绑定什么事件,只要通过参数传入就好。 二、命令对象(commondObj):只需要接收到接受者的参数,当发送者发出命令时,执行就好。

    1.1K20

    我需要一个按钮

    2.1、按钮1.0 这个1.0时代有个很鲜明的特征就是,带有浓郁的外框感,就怕别人不知道你是个按钮,和win7那种UI差不多吧。...2.4.1、3D按钮 我们知道,平面里面想要的到3D的效果,那么阴影是必不可少的,所以这里涉及到box-shadow属性,这样子我们看上去它长得像3D,紧接着我们期望我们点击它的时候有一个区别于原始状态的效果...而这里就会产生一个问题,在一个传统表单中,你点击了一个提交按钮,传统表单提交和Ajax提交哪个先呢?...那么这个点击就会产生一个点击事件,而点击事件要小心冒泡的产生,大致是三类的处理方法。...官方文档中指出,链接被作为按钮使用并用于在当前页面触发某些功能时, 那么,务必为其设置 role="button" 属性。

    84530

    不用React Vue,只用原生JS,如何开发单页面应用?

    开发单页面应用,有哪些难题在聊怎么实现之前,我们要先想明白:开发单页面应用,需要解决哪些难题?多个页面如何定义?...例如,用户点击了链接,准备渲染新页面,此时立马点击了旧页面某个按钮,要执行旧页面某个按钮的回调函数。这可能有超出预期的结果。我们需要在切换路由后,就禁止旧页面的一切事件回调。...};event.button表示按下的是鼠标哪个按键(0是主按键,通常指鼠标左键或默认值)。...如果用户是鼠标中键按下a标签、或者用户同时按下了Ctrl(Windos)、Command(Mac)、Shift,那么他应该期望是在新窗口打开,我们使用href原生行为即可。...如果用户同时按下了Option,那么他应该期望是打开菜单栏,我们也执行原生行为。

    9.7K51
    领券