составьте, создайте, генерируйте, представьте, уплотните, уменьшите, toSQL, toString в зависимости от природы класса и его связанных операторов
"Решение" методом перебора:
(function (previousInnerHTML) {
return function () {
if (document.body.innerHTML !== previousInnerHTML) {
alert("you've just (at max 33ms ago) changed DOM");
}
setTimout(arguments.callee, 33);
};
})(document.body.innerHTML)();
. Вы хотите просмотреть события мутации dom - см. http://en.wikipedia.org/wiki/DOM_Events , и прокрутите вниз до раздела о событиях мутации. Единственная проблема в том, что поддержка этих событий довольно отрывочна, поэтому будьте осторожны при их использовании. Примечательно отсутствие поддержки вообще в IE или Opera. Firefox, Safari и Chrome кажутся единственными.
Что-то вроде:
document.addEventListener("DOMSubtreeModified", function () {
alert("you've just changed DOM!");
});
Согласно http://www.quirksmode.org/dom/events/index.html для такого рода события вам нужно использовать addEventListener, а не attachEvent. Примечательно отсутствие поддержки вообще в IE или Opera. Firefox, Safari и Chrome кажутся единственными.
Что-то вроде:
document.addEventListener("DOMSubtreeModified", function () {
alert("you've just changed DOM!");
});
Согласно http://www.quirksmode.org/dom/events/index.html для такого рода события вам нужно использовать addEventListener, а не attachEvent. Примечательно отсутствие поддержки вообще в IE или Opera. Firefox, Safari и Chrome кажутся единственными.
Что-то вроде:
document.addEventListener("DOMSubtreeModified", function () {
alert("you've just changed DOM!");
});
Согласно http://www.quirksmode.org/dom/events/index.html для такого рода события вам нужно использовать addEventListener, а не attachEvent. Событие очевидно пузырится, так что все должно быть хорошо.
Совершенно верно, это может работать:
document.body.attachEvent('onpropertychange', function(event) {
if (event.propertyName !== 'innerHTML') return;
alert("you've just changed DOM!");
});
Это зависит от проприетарного события IE [onPropertyChange] ( http://msdn.microsoft.com/en -us / library / ms536956 (VS.85) .aspx) - поскольку документ innerHTML
будет изменяться всякий раз, когда вставляется узел. Но:
Это может не работать с некоторыми типами свойств. Я предполагаю, что innerHTML
будет функционировать как «получатель», поскольку он будет пересчитываться только при извлечении.
Он также обнаружил бы много ложных срабатываний - множество других вещей изменили бы innerHTML
, что не имело бы никакого отношения к вставке узла. Вы можете смягчить это, прослушивая определенный элемент, а не весь документ.