#jquery #contenteditable #detect #modifier
#jquery #contenteditable #обнаруживать #модификатор
Вопрос:
Я использовал следующий код из предыдущей публикации для обнаружения (большинства) изменений в элементе с атрибутом «contenteditable». Но, к сожалению, он не включает изменения в таблицах, которые происходят при использовании элементов управления модификаторами строк / столбцов таблицы, предоставляемых браузером (Firefox)
$('[contenteditable]').live('focus', function() {
var $this = $(this);
$this.data('before', $this.html());
return $this;
}).live('blur keyup paste', function() {
var $this = $(this);
if ($this.data('before') !== $this.html()) {
$this.data('before', $this.html());
$this.trigger('change');
}
return $this;
});
Как я могу изменить этот код, чтобы включить обнаружение изменений, налагаемых элементами управления браузера?
Ответ №1:
В качестве обходного пути я сделал следующее
- Я добавил прослушиватель событий для
DOMSubtreeModified
элемента. - Он срабатывает очень часто, поэтому я добавил
setTimeout
задержку - В отложенной функции я проверяю, изменилось ли содержимое элемента тем же методом, используя
$(this).data()
как указано выше.
Это немного грязно, но это делает свое дело.