Может не полностью ответить на ваш фактический вопрос, но учтите, что интерфейс InputEvent имеет свойство .inputType
, которое даст вам именно эту информацию, поэтому, если вы не нацеливаетесь в старых браузерах вы можете только прослушивать событие input и проверять это свойство по "insertFromPaste"
constant:
const onInput = (e) => {
const isPasted = e.nativeEvent.inputType.startsWith("insertFromPaste");
// ...
}
const target = document.getElementById('target');
target.oninput = (evt) => {
const isPasted = evt.inputType && evt.inputType.startsWith("insertFromPaste");
target.classList.toggle('is-pasted', isPasted);
};
.is-pasted { background-color: green; }
<div contenteditable id="target">edit me</div>