Вызов hotKey в программе
Дополняю текстовый редактор, в котором есть hotKey( Shift + Ctrl + B), который выделяет текст. Можно ли как-то вызвать эту функцию из программы? Понимаю, что нужно найти скрипт, который делает действие при нажатие данной комбинации, но может кто-то делал что-то подобное. Условно, мне нужно примерно следующее:
call_hotkey("Shift + Ctrl + B") - результат выделенный текст
Ответы (1 шт):
Имитация нажатия при клике:
call_hotkey("Control", "Shift", "B");
document.addEventListener("click", function() {
call_hotkey("Control", "Shift");
});
function call_hotkey(...params) {
for (let key of params) {
document.dispatchEvent( new KeyboardEvent('keydown', {'key': key}) );
}
setTimeout(function() {
for (let key of params) {
document.dispatchEvent( new KeyboardEvent('keyup', {'key': key}) );
}
}, 50);
}
/*** Некая реализация клавиш где-то внутри */
(function() {
let pressed = [];
document.addEventListener("keydown", function(e) {
console.log("keydown", e.key);
pressed.push(e.key);
if (pressed.length > 2) pressed.shift();
if (pressed.join(" ") === "Control Shift") {
console.log("moo");
}
});
document.addEventListener("keyup", function(e) {
console.log("keyup", e.key);
let index = pressed.indexOf(e.key);
if (index > -1) pressed.splice(index, 1);
});
})();
У меня реализация привязана к e.key, поэтому здесь передача единственного параметра {'key': key} в конструкторе new KeyboardEvent работает. Если заранее не знать, как оно реализовано внутри, нужно подсмотреть и передать все внутренности настоящего события:
document.addEventListener("keydown", function(e) {
console.log(e);
});
Возможно, еще и запускать keypress, чтобы наверняка.