Meteor keydown/keyup 外部输入事件

Meteor keydown/keyup events outside input

阅读本帖后: Keypress events stopped working outside of "input" elements in Meteor after update to 0.5.2

我知道 keydown/keyup 事件是不可能的,除非你将它添加到 $(document).on('keyup')..... 在 Rendered 回调中。

但是那个线程已经超过 2 年了。现在还是这样吗? input/contenteditable外加keyup/keydown事件还没有"Meteor Way"吗?

如果要在页面加载时为整个页面添加 keyup 事件,"meteor way" 是使用 Meteor.startup:

Meteor.startup(function () {
  $(document).on('keyup', function (e) {...});
}

你的问题答案是肯定的,照样可以做到。您仍然可以通过在 onCreatedonRendered 方法中添加事件监听器来为单个模板创建关键事件监听器,如下所示:

Template.myTemplate.onCreated(() => {
    $(document).on('keyup', (e) => {
        console.log('A key has come up.');
    });
});

您不必按照当前接受的答案的建议在 Meteor.startup 中执行此操作。

要销毁事件,使其不再在此模板中时不会持续存在:

Template.myTemplate.onDestroyed(() => {
    $(document).off('keyup');
});