Index: Source/core/dom/ContainerNode.cpp |
diff --git a/Source/core/dom/ContainerNode.cpp b/Source/core/dom/ContainerNode.cpp |
index 66a1bd40ef88132a0881b0d2494457f70b15833a..114e63d4ece6650a7c8627650a51f1a87a5104b0 100644 |
--- a/Source/core/dom/ContainerNode.cpp |
+++ b/Source/core/dom/ContainerNode.cpp |
@@ -670,7 +670,11 @@ void ContainerNode::removeChildren() |
childrenChanged(change); |
} |
- dispatchSubtreeModifiedEvent(); |
+ // We don't fire the DOMSubtreeModified event for Attr Nodes. This matches the behavior |
+ // of IE and Firefox. This event is fired synchronously and is a source of trouble for |
+ // attributes as the JS callback could alter the attributes and leave us in a bad state. |
+ if (!isAttributeNode()) |
+ dispatchSubtreeModifiedEvent(); |
} |
PassRefPtrWillBeRawPtr<Node> ContainerNode::appendChild(PassRefPtrWillBeRawPtr<Node> newChild, ExceptionState& exceptionState) |