Вы можете использовать .keyup()
для копирования и вставки.Щелчок правой кнопкой мыши с последующим выбором вставки в контекстном меню, похоже, не записывает щелчок, поэтому .click()
не работает .... вместо этого используйте setInterval()
для проверки каждые X секунд для захвата вставок правой кнопкой мыши.
Не уверен, что вы можете связать .keyup()
с div (может ли div фокусироваться во всех браузерах), но все всплывающие подсказки всплывают в документе, поэтому $(document)
всегда будет работать.
$(function() {
// Get initial text:
var previous = $("#mydiv").text();
// Make DIV editable if clicked
$("#mydiv").click(function() { this.contentEditable = 'true'; });
// Create a function for what to do if there is a change:
$check = function() {
// Check for a change
if ($("#mydiv").text() != previous) {
// What to do if there's been a change
// ...
}
// Store what contents are for later comparison
previous = $("#mydiv").text();
}
// Add the div changed handler to both keyup (ctr + v)
// and mouseclick (right click paste)
$(document).keyup($check);
// Right click work around is to check every Xs
setInterval(function() { $check(); }, 1000);
});
Это работает с вставкой .... он захватывает клавиши ctr, shift и т.д.(если вы попробуете это с помощью ctr-v и отпустите одну клавишу за другой, следите за состоянием, так как статус будет отображаться только changed
после выпуска первой клавиши и same
после выпускавторой .... как и должно быть).
Примечание: мне нравится иметь как обработчик .keyup()
, так и setInterval
, поскольку это гарантирует, что обратная связь будет мгновенной для нажатия клавиш.... даже если после вставки правой кнопкой мыши может возникнуть задержка.