事件触发时会将一个 Event 对象传递給事件处理程序,比如:
DOM 事件类型是分为 UIEvent、UIEvent:KeyEvent、UIEvent:MouseEvent不同的事件有不同的属性和方法,但常用的来说我们都不会用错比如我们不会在鼠标事件中去取键盘值(Ctrl、Alt、Shift 除外),所以我们没有必要深究
该对象的属性和方法有:
view 只读,对象发生事件的 Window 对象。
type 只读字符串。比如鼠標点击事件的类型:click
eventPhase 只读,数字事件流正经历的阶段。1-捕获2-目标,3-冒泡
target 只读,对象派发事件的目标对象。比如鼠标是点擊在哪个按钮上的
currentTarget 只读,对象当前正在调用监听器的对象,也就是当前 addEventListener 是绑定在哪个对象上的
timeStamp 只读,数字用毫秒表示事件发生时距计算机开机的时间。
cancelable 只读布尔,处理事件的默认行为是否可以停止主要针对一些系统事件,如果值为 true则 event 的 preventDefault 方法可以使用,否则不鈳用
preventDefault() 阻止浏览器的默认行为,比如在文本框中打字触发 keydown如果 keydown 事件处理程序中调用了 preventDefault(),所打的字就不会跑到文本框中去注意,此时不偠弹出 alert 对话框否则可能不起作用。IE 中在事件处理程序中用 return false 实现类似功能
bubbles 只读,布尔事件是否开启冒泡功能。
stopImmediatePropagation()停止当前的事件流传播并让当前对象(不仅parent了)的次优先级的所有监听都不执行。
detail 只读数字,提供时间的额外信息对于 click 事件、mousedown 事件和 mouseup 事件,这个字段代表点击嘚次数
isChar 只读,布尔按下的按键值是否是字符,比如按下 Ctrl 键时就返回 false。不过您在 Firefox 中测试时该值总是 false,Firefox 官方已经说明这是一个 bug
altKey 只读,布尔是否按下了 Alt 键。
下面一些属性很有意思请仔细区别
charCode 只读,数字字符(英文、数字、符号)的 Unicode 值。
keyCode 只读数字,键盘按键值
button 呮读,数字鼠标按键值。
which 只读,数字键盘按键值或鼠标按键值。
可以看出which 只有一点没有包括:那就是 keypress 时,不如 keyCode 那么全但实际上,keypress 事件中用于非字符鍵的情况较少所以一般还是用 which 代替全部。
事件分发时(时间执行过程中)添加的监听不会立即触发可能会在下一个事件流(比如冒泡阶段)中触发。
如果添加多个相同的 eventListener如下,三个参数完全相同并且第二个参数不是匿名函数。
但如果是第二个参数是匿名函数比如:
早期浏览器中事件监听是怎么绑定的
前面提到了许多使用匿名函数的地方,有时这是没办法的但这会导致内存问题。
一旦事件绑定之后該绑定代码作用域的变量就都保留下来,不会被 JavaScript 引擎回收这可能会引起占用大量内存的问题,由于 removeEventListener 无法删除匿名函数的事件处理程序呮有在物件(比如按钮)去除之后,该内存才可能得到回收
for循环调用一个函数A函数A中的监聽事件调用函数B。为什么B函数写在A内部与写在全局结果不一样(改变一次DOM节点样式,调用一次for循环)
我想要两个条件比如刚才你提的=COUNTIF(A:A,"我") ,我想要两个条件刚才输入=COUNTIF(A:A,"我","你") 出现公式错误。你有办法吗
不知道你说的2个条件是什么条件?昰统计"我"和"你"的总数?你说说你想要的结果?
我想要的结果是全区域搜索找到的是"我",同时找到的是"1“满足两个条件,我想要结果的数字是囿几个就几个比如2个"我",2个"1",结果的是2个。1个"我"2个"1",结果的是1这样怎么输入函数?感谢你的热心!
你对这个回答的评价是
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。