我一直试图在Meteor中实现键绑定一段时间。我尝试了以下包:
https://github.com/matteodem/meteor-keybindings
但无论我做什么,它都会说方法(例如添加键绑定)是未定义的。所以我在考虑使用另一种方法。
有没有人成功在Meteor中创建了键绑定?比如说,按alt + a触发事件?
答案 0 :(得分:2)
如果您指的是页面上任何位置的键事件,而不仅仅是输入字段内部,我使用下面的方法将这些回调添加到窗口中。然后你必须在关闭该路线时手动删除它们。
Mac上的,控制键等只是用于发送不同的密钥代码。 然而,我还没有在Windows上取得成功 - 在这里没有机器进行测试和尝试,似乎没有引出关键的反应。但是我认为这更像是一个与流星有关的jquery /浏览器。如果您在Windows上找到Ctrl-S等(或alt-S)的有用密钥代码,请告诉我们。
onRun和onStop应该只调用一次,但我发现事件是铁的;路由器有点不可预测,所以值得在你自己的initDone = true / false的检查中添加。
#coffeescript
#--- router
Router.map ->
@route 'myTemplate',
path: '/some/path'
onRun: ->
Template.komikPlayer.initScene()
onStop: ->
Template.komikPlayer.exitScene()
然后在相关视图模板中有init和exit事件来设置/拆除关键事件
Template.myTemplate.initScene = () ->
addKeyEvents()
Template.myTemplate.exitScene = () ->
removeKeyEvents()
addKeyEvents = () ->
console.log('addKeyEvents')
$(window).on 'keydown', (e) -> handleKeys(e)
handleKeys = (e) ->
switch e.keyCode
when 69
console.log('edit')
url = "/komikEditScene/#{comic.data.params.chapter}/#{comic.data.params.scene}"
window.open(url, 'editor')
when 39, 32, 13 # next
navTo("#nextField")
when 37 # back
navTo("#backField")
else
console.log('unused key:', e.keyCode)
答案 1 :(得分:1)
不确定这是否有用,但我在js文件的事件区域使用简单的按键检测。这仅在选择输入字段时有效。
//keypress input detection for autofilling form with test data
'keypress input': function(e) {
if (e.which === 17) { //17 is ctrl + q
fillForm();
}
}