Отличная замена устаревшим событиям DOM * - animationStart
в сочетании с CSS-анимациями. Дэвид Уолш пишет о методе.
Сначала настройте ключевые кадры и примените их к элементам, которые вы хотите прослушать ( не забудьте префиксы вендора! ):
@keyframes nodeInserted {
from { clip: rect(1px, auto, auto, auto); }
to { clip: rect(0px, auto, auto, auto); }
}
#parentElement > li {
animation-duration: 0.001s;
animation-name: nodeInserted;
}
Затем добавьте слушателя:
var insertListener = function(event){
if (event.animationName == "nodeInserted") {
// This is the debug for knowing our listener worked!
// event.target is the new node!
console.warn("Another node has been inserted! ", event, event.target);
}
}
document.addEventListener("animationstart", insertListener, false); // standard + firefox
document.addEventListener("MSAnimationStart", insertListener, false); // IE
document.addEventListener("webkitAnimationStart", insertListener, false); // Chrome + Safari
Та-да! Вот демо Дэвида . Это прекрасно работает для меня с расширением Chrome, которое добавляет фотографии Facebook в Google Voice (см. Content.css и injected.js).