diff --git a/Libraries/LibHTML/DOM/Element.cpp b/Libraries/LibHTML/DOM/Element.cpp
index c60319c075..2662562f4d 100644
--- a/Libraries/LibHTML/DOM/Element.cpp
+++ b/Libraries/LibHTML/DOM/Element.cpp
@@ -44,11 +44,16 @@ void Element::set_attribute(const String& name, const String& value)
attribute->set_value(value);
else
m_attributes.empend(name, value);
+
+ parse_attribute(name, value);
}
void Element::set_attributes(Vector&& attributes)
{
m_attributes = move(attributes);
+
+ for (auto& attribute : m_attributes)
+ parse_attribute(attribute.name(), attribute.value());
}
bool Element::has_class(const StringView& class_name) const
@@ -80,3 +85,7 @@ RefPtr Element::create_layout_node(const StyleResolver& resolver, co
ASSERT_NOT_REACHED();
}
+
+void Element::parse_attribute(const String&, const String&)
+{
+}
diff --git a/Libraries/LibHTML/DOM/Element.h b/Libraries/LibHTML/DOM/Element.h
index a45f09ba4b..d6641e5496 100644
--- a/Libraries/LibHTML/DOM/Element.h
+++ b/Libraries/LibHTML/DOM/Element.h
@@ -43,6 +43,7 @@ public:
bool has_class(const StringView&) const;
virtual void apply_presentational_hints(StyleProperties&) const {}
+ virtual void parse_attribute(const String& name, const String& value);
private:
RefPtr create_layout_node(const StyleResolver&, const StyleProperties* parent_properties) const override;