Is there any onDocumentChange event?

后端 未结 3 1709

Is there any event in Internet Explorer, that is fired whenever DOM is changed? For example:

document.attachEvent(\"ondocumentchange\", function () {
    ale         


        
3条回答
  •  北荒
    北荒 (楼主)
    2020-12-15 01:50

    Off the top of my head, this might work:

    document.body.attachEvent('onpropertychange', function(event) {
      if (event.propertyName !== 'innerHTML') return;
      alert("you've just changed DOM!");
    });
    

    This relies on IE's proprietary [onPropertyChange event](http://msdn.microsoft.com/en-us/library/ms536956(VS.85).aspx) — since the document's innerHTML would change whenever a node is inserted. But:

    1. It might not work with certain types of properties. I imagine innerHTML would function like a "getter" in that it'd only get recalculated when retrieved.

    2. It would also pick up a lot of false positives — lots of other things would modify the innerHTML that would have nothing to do with node insertion. You could mitigate this by listening on a particular element, rather than document-wide.

提交回复
热议问题