contenteditable: обнаружение изменений элементов при использовании модификатора строки / столбца

#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:

В качестве обходного пути я сделал следующее

  1. Я добавил прослушиватель событий для DOMSubtreeModified элемента.
  2. Он срабатывает очень часто, поэтому я добавил setTimeout задержку
  3. В отложенной функции я проверяю, изменилось ли содержимое элемента тем же методом, используя $(this).data() как указано выше.

Это немного грязно, но это делает свое дело.