Доброго времени. Пишу тесты для редактора текста на mocha.
Задача такая, симулировать нажатие клавиши Enter по тегу div[contenteditable]
При это надо посмотреть, что будет в этом div, после этого нажатия.
Вопрос: разрешено ли в браузере программно через события нажать клавишу в поле ввода, чтобы поле отреагировало и добавило нужный символ.
В интернете пишут так:
var keyboardEventdown= new KeyboardEvent('keydown', {bubbles:true, key: 'Enter', code: 'Enter', which: 13});
Object.defineProperty(keyboardEventdown, 'charCode', {value: 0});
Object.defineProperty(keyboardEventdown, 'which', {value: 13});
Object.defineProperty(keyboardEventdown, 'keyCode', {value: 13});
editor.dispatchEvent(keyboardEventdown)
Но я так понимаю, что это просто эмулирует событие, чтобы сработал addEventListener, но само событие реально не происходит. И этот код не работает, в textarea который я ему подаю, новая строка не появлятся.
UPD
Если кому интересно то такой вот код работает в 3-х основных браузерах, а также в phantomjs
var simulateKeyPress = function (type, keyCodeArg, element) {
var evt = document.createEvent('HTMLEvents')
evt.initEvent(type, true, false);
evt.keyCode = keyCodeArg;
evt.which = keyCodeArg;
element.dispatchEvent(evt);
}
simulateKeyPress('keydown', 13, editor.editor);