2011-11-05 28 views
1

我使用以前的發佈中的以下代碼來檢測(大部分)屬性爲「contenteditable」的元素的更改。但可悲的是它不包括改變使用的瀏覽器(Firefox)contenteditable:使用行/列修飾符時檢測元素更改

$('[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. 在延遲函數I檢查該元素的含量與如上述那樣使用$(this).data()相同的方法改變。

這有點髒,但它的確有用。