Small test attached. Currently output is foo attribute fired class attribute fired fired It looks like the general case of dispatching this event is handled in NamedNodeMap::addAttribute, and additionally a separate event is dispatched for class in StyledElement::classAttributeChanged