В моем расширении Google Chrome я хочу что-то делать, когда пользователь нажимает клавиши CTRL + C или CTRL + X, то есть, в основном, при вырезании или копировании текста.Выключение события при нажатии этих клавиш не проблема, но поведение таково: копирование работает нормально, за исключением того факта, что оно отменяет выделение текста, но вырезание еще хуже.Он скопирует помеченный текст, но не будет вырезать / удалить текст, а просто отменит выделение текста, как с помощью функции копирования.
Что я здесь не так делаю?Нужно ли ждать окончания работы функции cut, прежде чем я начну работать с содержимым буфера обмена?
Это то, что у меня есть, включая функцию, которая должна задерживать выполнение скрипта (не работает, очевидно,):
function doAdelay(){
setTimeout(function(){return true;},30000);
};
var map = {};
onkeydown = onkeyup = function(e) {
map[e.keyCode] = e.type == 'keydown';
if(map[17] && (map[67] || map[88])) { // CTRL + C or X
doAdelay();
var copiedText = window.getSelection().toString();
var tempTextArea = document.createElement('textarea');
tempTextArea.setAttribute('readonly', '');
tempTextArea.style.position = 'absolute';
tempTextArea.style.left = '-9999px';
document.body.appendChild(tempTextArea);
tempTextArea.value = copiedText;
tempTextArea.select();
document.execCommand("copy");
document.body.removeChild(tempTextArea);
}
}