Вы можете использовать событие вставки, чтобы обнаружить вставку в большинстве браузеров (особенно не Firefox 2, хотя).Когда вы обрабатываете событие вставки, запишите текущий выбор, а затем установите краткий таймер, который вызывает функцию после завершения вставки.Затем эта функция может сравнивать длины и знать, где искать вставленный контент.Что-то вроде следующего.Для краткости, функция, которая получает выбор текстовой области, не работает в IE.Смотрите здесь что-то, что делает: Как получить начальную и конечную точки выделения в текстовой области?
function getTextAreaSelection(textarea) {
var start = textarea.selectionStart, end = textarea.selectionEnd;
return {
start: start,
end: end,
length: end - start,
text: textarea.value.slice(start, end)
};
}
function detectPaste(textarea, callback) {
textarea.onpaste = function() {
var sel = getTextAreaSelection(textarea);
var initialLength = textarea.value.length;
window.setTimeout(function() {
var val = textarea.value;
var pastedTextLength = val.length - (initialLength - sel.length);
var end = sel.start + pastedTextLength;
callback({
start: sel.start,
end: end,
length: pastedTextLength,
text: val.slice(sel.start, end)
});
}, 1);
};
}
var textarea = document.getElementById("your_textarea");
detectPaste(textarea, function(pasteInfo) {
alert(pasteInfo.text);
// pasteInfo also has properties for the start and end character
// index and length of the pasted text
});