首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.onkeypress与window.document.body.onkeypress的差异

window.onkeypress与window.document.body.onkeypress的差异
EN

Stack Overflow用户
提问于 2020-09-29 14:49:15
回答 3查看 423关注 0票数 1

我继承了这个JavaScript代码,它读取输入键事件并对它们进行处理,但是对于按下的每个键,我都会得到重复。

Intelisense将“窗口”显示为

var窗口:窗口& globalThis类型

代码语言:javascript
复制
    this.listen = function() {

       //when comment one of these two out, my duplicate issue goes away.
       window.onkeypress = this.captureKeyPress;  
       window.document.body.onkeypress = this.captureKeyPress;
    }


    this.captureKeyPress = function(e) {
       //process key input event
    }

我研究了一下,但我似乎找不到window.keypresswindow.document.body.onkeypress.之间的区别有关按键事件的一些资源引用了GlobalEventHandlers.onkeypress或document.onkeypress。

有人能告诉我谈论这两件事及其差异的文档或资源吗?我觉得他们是以这种方式实现的,因为我支持传统浏览器,如IE7或IE9以及更早的版本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-29 14:59:31

Document.body属性表示当前文档的或节点,如果不存在此类元素,则为null。表示运行脚本的窗口的全局变量window将公开给JavaScript代码。

基本上,window.document.body是指body标记,而window是所有文件。至于支持IE7或IE9等传统浏览器,window支持IE4和更高版本,而Document.body支持IE6和更高版本。无论哪种方式,IE7和更高版本都可以处理该事件。

资料来源

Document.body

窗户

票数 1
EN

Stack Overflow用户

发布于 2020-09-29 14:53:36

它们至少在Chrome上也是一样的--一个在窗户上,另一个在身体上。

代码语言:javascript
复制
window.onkeypress = function(e) { console.log("okp",e.key) }
window.document.body.onkeypress = function(e) { console.log("dbokp",e.key) }

票数 1
EN

Stack Overflow用户

发布于 2020-09-29 15:10:06

请参阅文档对象和窗口对象之间有什么区别?

不同之处在于,使用window.onkeypress,您将在窗口对象上注册一个事件,而使用window.document.body.onkeypress,您将在主体上注册一个事件。事件在焦点集中时将触发特定元素。但是,注册到该元素父元素的事件也会触发,因此注册到窗口的事件将触发任意一种方式,在文档或主体上注册的事件也会触发。

请参阅jsbin示例

代码语言:javascript
复制
window.onkeypress = function() {
  console.log('key pressed window')
}

window.document.body.onkeypress = function() {
  console.log('key pressed body')
}

document.getElementById('div').onkeypress = function() {
  console.log('key pressed div');
}
代码语言:javascript
复制
<div id="div">
  <input type="text" />
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64122108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档