Dart 无法将core-a11y键与输入一起使用

Dart 无法将core-a11y键与输入一起使用,dart,polymer,dart-polymer,core-elements,Dart,Polymer,Dart Polymer,Core Elements,飞镖,聚合物0.5,飞镖 在一个页面中,我有一些div元素,里面有core-a11y-keys键,键是“上下左右”。它工作得很好,一些动作是在按键按下后发生的 我在页面上也有输入字段。问题是我不能在其中使用箭头键,因为core-a11y-keys 问题是:如何避免破坏行为 HTML: 确保core-a11y-keys的target属性确实存在,并且指向div,否则它将应用于整个页面,包括您的输入。有关如何执行此操作的更多详细信息,请参见此处: 如果您的input是您的core-a11y-keys

飞镖,聚合物0.5,飞镖

在一个页面中,我有一些
div
元素,里面有
core-a11y-keys
键,键是“上下左右”。它工作得很好,一些动作是在按键按下后发生的

我在页面上也有输入字段。问题是我不能在其中使用箭头键,因为
core-a11y-keys

问题是:如何避免破坏行为

HTML:


确保
core-a11y-keys
target
属性确实存在,并且指向
div
,否则它将应用于整个页面,包括您的
输入。有关如何执行此操作的更多详细信息,请参见此处:

如果您的
input
是您的
core-a11y-keys
所针对的
div
的子项,则它将执行您指示它在
div
中的任何位置执行的操作:拦截击键。在这种情况下,您需要处理
输入中的
onKeyPress
事件,如


我没有尝试过这个,可能您需要使用
onKeyUp
onKeyDown
,如中所示。

确保
core-a11y-keys
target
属性实际上存在并指向
div
,否则它将应用于整个页面,包括您的
输入。有关如何执行此操作的更多详细信息,请参见此处:

如果您的
input
是您的
core-a11y-keys
所针对的
div
的子项,则它将执行您指示它在
div
中的任何位置执行的操作:拦截击键。在这种情况下,您需要处理
输入中的
onKeyPress
事件,如


我没有试过这个,可能你需要
onKeyUp
onKeyDown
来代替。

我不明白这个问题。你能提供一些代码来重现这个问题吗?我不明白这个问题。您能提供一些代码来重现问题吗?很抱歉造成误导,输入不在div中,且
core-a11y-keys
。我不需要在
输入上捕获事件,我只需要输入就可以正常工作。在我的情况下,不可能在其中使用箭头键,只是不起作用。这个解决方案对我的问题不起作用。我无法捕获目标div上的事件,因为没有任何具有可聚焦接口的元素。我只能捕捉身体上的事件。您问题中的代码没有显示
target
属性。再看我的答案,第一句话。您是否包含目标?是的,您关于
target
属性的看法是正确的。我和目标打过球,可以从不同的目标中分割事件。但这对我来说毫无意义,因为我的
div
不包含任何可聚焦元素。我可以将这个div作为目标,但我从未得到任何事件。我的问题是,我必须捕获主体级别的事件,在这种情况下,它会中断放置在主体标记某处的输入(当然!)。core-a11y-keys在哪里并不重要。很抱歉造成误解,输入不在带有
core-a11y-keys
的div中。我不需要在
输入上捕获事件,我只需要输入就可以正常工作。在我的情况下,不可能在其中使用箭头键,只是不起作用。这个解决方案对我的问题不起作用。我无法捕获目标div上的事件,因为没有任何具有可聚焦接口的元素。我只能捕捉身体上的事件。您问题中的代码没有显示
target
属性。再看我的答案,第一句话。您是否包含目标?是的,您关于
target
属性的看法是正确的。我和目标打过球,可以从不同的目标中分割事件。但这对我来说毫无意义,因为我的
div
不包含任何可聚焦元素。我可以将这个div作为目标,但我从未得到任何事件。我的问题是,我必须捕获主体级别的事件,在这种情况下,它会中断放置在主体标记某处的输入(当然!)。核心a11y键在哪里并不重要。
<body>
    <div id="widgetContainer">
        <core-a11y-keys target="{{body}}" keys="up down left right"
                        on-keys-pressed="{{widgetContainer_on_move_keys}}">
        </core-a11y-keys>
    </div>
    <input id="txtInput">
</body>
handleInputKeyStrokes(Event e) {
  // You'll need one or both of these; not sure which.
  e.preventDefault();
  e.stopPropagation();
}