为什么console.log在Chrome中的某些网站上是空功能?

Mat*_*atm 14 javascript events event-handling javascript-events

转到Twitter的登录页面,在控制台中键入以下内容:

window.addEventListener('keypress', function(e){console.log('hello')}, true)

(注意:第三个参数如何设置为true启用事件捕获.这会导致事件在被子元素占用之前首先被窗口截获.)

尝试按某些键.请注意如何hello不输出到控制台.添加事件侦听器keydownkeyup不更改任何内容.

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)

它应该按预期工作.