我可以使用dojo检测节点标记文本中的更改吗?

时间:2014-12-05 18:22:30

标签: dojo

我有一堆节点会在不可预测的结构中包含标记。我希望能够观察这些节点,看看任何子节点或其后代的html是否会发生变化,无论多么微小。如果他们这样做,那么我想发射一个事件。

我可以通过道场做到这一点吗?我正在使用最新的1.10。

感谢。

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找dom突变。据我所知,dojo没有为此提供api,但它们设置起来非常简单。问题是不同的浏览器有不同的方法。

var observeNode = document.getElementById('observeMe');

// Check for vendor-specific versions of MutationObserver.
MutationObserver = (function() {
  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
  for (var i=0, il=prefixes.length; i<il; i++) {
    if (prefixes[i] + 'MutationObserver' in window) {
      return window[prefixes[i] + 'MutationObserver'];
    }
  }
}());

// Sniff for MutationObserver support
if (MutationObserver) {
  var observer = new MutationObserver(function(mutations) {
    alert('Something changed!');
  });
  observer.observe(observeNode, {attributes: true, childList: true, characterData: true});
} else {
  // Fall back to mutation events
  if (observeNode.addEventListener) {
    observeNode.addEventListener('DOMSubtreeModified', function() {
      alert('Something changed!');
    });
  }
  // IE8 and below has its own little weird thing
  else {
    observeNode.onpropertychange = function() {
      alert('Something Changed!');
    }
  }
}