contenteditable: обнаружение изменений элемента при использовании модификатора строки / столбца - PullRequest
1 голос
/ 05 ноября 2011

Я использовал следующий код из предыдущей публикации, чтобы обнаружить (большинство) изменений в элементе с атрибутом «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 голос
/ 15 ноября 2011

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

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

Это немного грязно, но это помогает.

...