Mat*_*atm 14 javascript events event-handling javascript-events
转到Twitter的登录页面,在控制台中键入以下内容:
window.addEventListener('keypress', function(e){console.log('hello')}, true)
(注意:第三个参数如何设置为true
启用事件捕获.这会导致事件在被子元素占用之前首先被窗口截获.)
尝试按某些键.请注意如何hello
不输出到控制台.添加事件侦听器keydown
或keyup
不更改任何内容.
hello
将获得大多数网站的输出,但不会在Twitter或Gmail等网站上输出.
为什么?是什么阻止了事件监听者?
编辑:似乎在Firefox上按预期工作.但不是Chrome.为什么Chrome不按预期触发事件监听器?
编辑2:正如以下几个人推断的那样,console.log
对于Twitter和Gmail这样的网站,Chrome上的功能是空的.这是为什么?
I a*_*ica 15
因为这些网站已经专门设置(显然是针对webkit):
console.log = function(){};
Run Code Online (Sandbox Code Playgroud)
但是,在Chrome中,您可以log()
通过在控制台中发出以下命令来恢复原始功能:
console.log = console.__proto__.log
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
window.addEventListener('keypress', function(e){console.log('hello')}, true)
Run Code Online (Sandbox Code Playgroud)
它应该按预期工作.
归档时间: |
|
查看次数: |
4156 次 |
最近记录: |