![](/img/trans.png)
[英]How can I simulate key events with selenium in a CodeMirror Editor
[英]How can I trigger keyboard events in CodeMirror?
我使用不同的文本字段作为CodeMirror的代理。 我想使用的功能,如closebrackets.js
,它们通过键盘事件,如激活keydown
, keypress
,和keyup
。 我尝试了几种不同的方法来触发这些事件,但没有一种方法导致CodeMirror接收任何东西:
kc = 219
e = $.Event 'keydown', { which: kc }
$( myCodeMirror.getInputField() ).trigger e
不行。 没有事件被触发。
cmIF = $( myCodeMirror.getInputField() )
textArea = $('<textarea></textArea>')
$('body').append textArea
textArea.keydown (e) ->
cmIF.focus()
return
kc = 219
e = $.Event 'keydown', { which: kc }
textArea.trigger e
尝试转发来自不同文本区域的事件。 不行。 CM不会触发事件。
$( myCodeMirror.getWrapperElement() ).children().each (index) ->
$(this).trigger e
return
试图在CMs包装器的每个子节点上触发事件。 不行。 没有发生CM事件。
我在这做错了什么? 如何在CodeMirror实例上触发键盘事件?
我不确定我是否100%理解你,但是当我定义codemirror实例的配置选项时,我目前定义了键盘事件。
var cmInstance = CodeMirror(target, {
value: myTextArea.value,
//other options here perhaps
//defining some keyboard shortcuts
extraKeys: {
"Ctrl-J": "toMatchingTag",
"Ctrl-S": function(cm) {
saveCode(cm); //function called when 'ctrl+s' is used when instance is in focus
},
"F11": function(cm) {
toggleFullscreen(cm,true); //function called for full screen mode
},
"Esc": function(cm) {
toggleFullscreen(cm,false); //function to escape full screen mode
}
}
});
请记住,这些函数仅在codemirror实例处于焦点时触发。 然后你可以在你的函数中做任何你喜欢的事情,甚至可以添加新的监听器来查看发生了什么类型的事件(?)。
我希望这有帮助。
我也有同样的痛苦,最后我找到了解决方案。 我不知道这是丑陋与否,但它对我有用。 希望它对你有用。
myCodeMirror.options.extraKeys.F11(); //trigger F11 assigned function
myCodeMirror.options.extraKeys.["Ctrl-S"](); //trigger Ctrl-S assigned function
codemirror带有一个未记录的函数triggerOnKeyDown,您可以使用该函数触发codemirror上的键:
const ev = {
type: 'keydown',
keyCode: 40 // the keycode for the down arrow key, use any keycode here
}
cm.triggerOnKeyDown(ev)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.