Вставленный текст clipboarddata.getData('text') изменяется.Однако мне нужен переключатель, который при нажатии CTRL SHIFT V вместо CTRL < kbd>V вставленный текст не изменяется.
Я пытался перехватить клавишу Shift с помощью клавиши Down/Keyup:
Код: Выделить всё
$('textarea').on('keyup', function(e)
{
shiftkey_down = e.shiftKey;
});
Код: Выделить всё
$('textarea').on('paste', function(e)
{
if (shiftkey_down)
{
// ...
}
});
Как правильно с этим справиться?
Единственная идея, которая у меня возникла, - сохранить последнюю нажатую комбинацию клавиш внутри события нажатия клавиши, а затем проверить последнюю нажатую комбинацию внутри обработчика вставки. Но, похоже, это тоже не работает.
Обновление:
Я пробовал использовать небольшой таймаут, чтобы логическая переменная keydown не перезаписывалась немедленно:
Код: Выделить всё
var shiftkey_paste = false;
$('textarea').on('keydown', function(e)
{
if (!shiftkey_paste)
{
shiftkey_paste = e.shiftKey && e.ctrlKey;
console.log('> '+shiftkey_paste);
setTimeout( function()
{
// set false again after timeout so paste event has chance to pick up a true value
shiftkey_paste = false;
}, 10);
}
console.log('>> ' + shiftkey_paste);
});
Результат:
Код: Выделить всё
> false
>> false
> true
>> true
> false
>> false
>>> false
Обновление 2:
Если кто-то найдет лучшее решение, опубликуйте свой ответ.
Подробнее здесь: https://stackoverflow.com/questions/781 ... javascript
Мобильная версия