【发布时间】:2019-05-31 05:35:44
【问题描述】:
我正在尝试通过仅使用键盘输入进行导航来使我的网站更易于访问。为此,我需要能够对动态创建的 SVG 元素 g 进行制表符,然后按 Enter 打开包含更多信息的模式。
我可以检测到何时按下了任何键,但没有专门输入。我见过很多人描述如何检测输入元素上的输入按键,但这并不能解决我的问题。我遇到的问题是 myEvent 只是一个普通事件而不是键盘事件。所以它没有键码。我还看到它建议使用 myEvent.key 或 myEvent.which,它也没有。所以我不知道如何获取按下了什么键的信息。
我不知道此信息是否有用,但我的网站是一个查看家族历史树的网络应用程序,因此每个 SVG 元素都是树中节点的可视化表示。我正在尝试在每个节点上进行制表符,并在按下回车键时显示有关焦点节点的人的更多信息。
var g:Element = document.createElementNS("http://www.w3.org/2000/svg", "g");
g.setAttribute('tabindex', "0"); // So I can tab to the element
g.addEventListener("keypress", function (myEvent) {
// To this point everything works.
// The next line gives an error.
if(myEvent.keyCode === 13) { // 13 is enter
// Open my modal
}
});
【问题讨论】:
-
返回什么错误?因为我看不出这段代码有什么问题。
-
它返回 void
-
1) 您使用什么浏览器进行测试? 2)您是否尝试过使用
keydown或keyup代替? (keypress已贬值 - developer.mozilla.org/en-US/docs/Web/API/Document/…) 3)您是否尝试过使用myEvent.key代替? (keycode已贬值 - developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode) -
是的,我已尝试使用 myEvent.key 进行 keydown,但仍然收到错误消息“'Event'.ts(2339) 类型上不存在属性'key'”
标签: javascript typescript svg