Polymer 制作一个聚合物组件,可以听到一页上的所有按键

Polymer 制作一个聚合物组件,可以听到一页上的所有按键,polymer,polymer-1.0,Polymer,Polymer 1.0,聚合物1.0组件是否有一种方法可以注册页面上发生的所有按键,而不管焦点在哪里 在预组件世界中,我会钩住文档主体上的关键事件。什么是干净的、组件驱动的方法?我通过实现 我基本上只是将源代码读取到为该演示定义的组件,这 我在对原始问题的评论中提到的错误只是我固执地将keyEventTarget放在properties对象中,在我已经放在页面中的properties对象上方的一两个屏幕上,该对象优先 下面是一个非常简单的组件,它显示了它的作用: <dom-module id="x-compone

聚合物1.0组件是否有一种方法可以注册页面上发生的所有按键,而不管焦点在哪里


在预组件世界中,我会钩住文档主体上的关键事件。什么是干净的、组件驱动的方法?

我通过实现

我基本上只是将源代码读取到为该演示定义的组件,这

我在对原始问题的评论中提到的错误只是我固执地将
keyEventTarget
放在
properties
对象中,在我已经放在页面中的
properties
对象上方的一两个屏幕上,该对象优先

下面是一个非常简单的组件,它显示了它的作用:

<dom-module id="x-component">
<template>
Type shift+a to see feedback.
<div id="feedback"></div>
</template>
</dom-module>
<script>
  Polymer({
    is: 'x-component',
    behaviors: [Polymer.IronA11yKeysBehavior],
    keyBindings: {
      'shift+a': '_handleKey'
    },
    _handleKey: function(e) {
      this.$['feedback'].innerHTML = this.$['feedback'].innerHTML + "<p>again</p>";
    },
    properties: {
      keyEventTarget: {
        type: Object,
        value: function() {
          return document.body;
        }
      }
    }
  });
</script>

键入shift+a以查看反馈。
聚合物({
是‘x分量’,
行为:[聚合物.IronA11yKeysBehavior],
键绑定:{
“shift+a”:“U handleKey”
},
_handleKey:功能(e){
this.$['feedback'].innerHTML=this.$['feedback'].innerHTML+“再次”;
},
特性:{
keyEventTarget:{
类型:对象,
值:函数(){
返回文档.body;
}
}
}
});

还有iron-a11y-keys组件。您仍然必须在
document.body
上添加关键事件才能实现您所描述的功能。“iron-a11y-keys-behavior”的演示将document.body设置为keyEventTarget不幸的是,我正在尝试实现此功能,尽管尝试复制该演示,但我的元素只有它们自己作为目标。我可以在控制台中将目标更改为document.body,然后启动我的处理程序。太近了!啊,我真是疯了。知道了!