Перехватывать Вставить данные в JavaScript
Я получил следующий код из события вставки Intercept в Javascript.
Мне нужно получить его до того, как оно будет вставлено, иначе я потеряю символы "\n", которые нужно сохранить.
Это прекрасно работает для перехвата данных буфера обмена для одного элемента с идентификатором. Мне нужно, чтобы он работал на всех элементах ввода. Когда я пытаюсь использовать jQuery, чтобы получить элементы ввода ничего.
Любая помощь приветствуется.
var paster = function () {
var myElement = document.getElementByTagName('pasteElement');
myElement.onpaste = function(e) {
var pastedText = undefined;
if (window.clipboardData && window.clipboardData.getData) { // IE
pastedText = window.clipboardData.getData('Text');
} else if (e.clipboardData && e.clipboardData.getData) {
pastedText = e.clipboardData.getData('text/plain');
}
processExcel(pastedText); // Process and handle text...
return false; // Prevent the default handler from running.
};
}
2 ответа
Решение
Просто добавьте paste
слушатель события документа.
document.addEventListener("paste", function (e) {
console.log(e.target.id);
var pastedText = undefined;
if (window.clipboardData && window.clipboardData.getData) { // IE
pastedText = window.clipboardData.getData('Text');
} else if (e.clipboardData && e.clipboardData.getData) {
pastedText = e.clipboardData.getData('text/plain');
}
e.preventDefault();
e.target.value = "You just pasted '" + pastedText + "'";
return false;
});
Что сказал nmaier, но вы также должны проверить исходное событие.
document.addEventListener("paste", function (e) {
console.log(e.target.id);
var pastedText = undefined;
if (window.clipboardData && window.clipboardData.getData) { // IE
pastedText = window.clipboardData.getData('Text');
} else {
var clipboardData = (e.originalEvent || e).clipboardData;
if (clipboardData && clipboardData.getData) {
pastedText = clipboardData.getData('text/plain');
}
e.preventDefault();
e.target.value = "You just pasted '" + pastedText + "'";
return false;
}
});
Кроме того, вам, вероятно, следует добавить прослушиватель событий только к элементу, а не ко всему документу.