diff --git a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
index 7f150032c3..052364a84f 100644
--- a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
+++ b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
@@ -384,11 +384,16 @@ void HTMLDocumentParser::handle_in_head(HTMLToken& token)
}
if (token.is_start_tag() && token.tag_name() == "template") {
- TODO();
+ // FIXME: Support this properly
+ insert_html_element(token);
+ return;
}
if (token.is_end_tag() && token.tag_name() == "template") {
- TODO();
+ // FIXME: Support this properly
+ ASSERT(current_node().tag_name() == "template");
+ m_stack_of_open_elements.pop();
+ return;
}
if ((token.is_start_tag() && token.tag_name() == "head") || token.is_end_tag()) {
@@ -469,7 +474,13 @@ void HTMLDocumentParser::handle_after_head(HTMLToken& token)
}
if (token.is_start_tag() && token.tag_name().is_one_of("base", "basefont", "bgsound", "link", "meta", "noframes", "script", "style", "template", "title")) {
- TODO();
+ PARSE_ERROR();
+ m_stack_of_open_elements.push(*m_head_element);
+ process_using_the_rules_for(InsertionMode::InHead, token);
+ m_stack_of_open_elements.elements().remove_first_matching([&](auto& entry) {
+ return entry.ptr() == m_head_element;
+ });
+ return;
}
if (token.is_end_tag() && token.tag_name() == "template") {