1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 01:34:58 +00:00

LibHTML: Add Document::get_element_by_id() and get_elements_by_name()

These will be useful for implementing various things. They don't do any
caching at the moment, but that might become valuable in the future.

To facilitate this change, I also made it possible to abort a tree walk
with for_each_in_subtree() by returning IterationDecision::Break from
the callback.
This commit is contained in:
Andreas Kling 2019-10-21 12:01:30 +02:00
parent 465a33443c
commit 4d9740ecef
5 changed files with 57 additions and 11 deletions

View file

@ -321,11 +321,14 @@ void HtmlView::scroll_to_anchor(const StringView& name)
HTMLAnchorElement* element = nullptr;
document()->for_each_in_subtree([&](auto& node) {
if (!is<HTMLAnchorElement>(node))
return;
auto& anchor_element = to<HTMLAnchorElement>(node);
if (anchor_element.name() == name)
element = &anchor_element;
if (is<HTMLAnchorElement>(node)) {
auto& anchor_element = to<HTMLAnchorElement>(node);
if (anchor_element.name() == name) {
element = &anchor_element;
return IterationDecision::Break;
}
}
return IterationDecision::Continue;
});
if (!element) {