1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 15:18:11 +00:00

LibWeb: Expose HTMLSelectElement::options

Use the stub implementation of HTMLOptionsCollection to expose the
`option` children of `select` elements.

This fixes a JS error on openstreetmap.org, which occured when JQuery
code tried to access `options.length`:
https://github.com/jquery/jquery/blob/main/src/attributes/val.js#L121
This commit is contained in:
Simon Wanner 2022-03-16 13:08:12 +01:00 committed by Andreas Kling
parent 624527f15e
commit deef2911e9
3 changed files with 24 additions and 0 deletions

View file

@ -6,6 +6,7 @@
*/
#include <LibWeb/HTML/HTMLFormElement.h>
#include <LibWeb/HTML/HTMLOptionElement.h>
#include <LibWeb/HTML/HTMLSelectElement.h>
namespace Web::HTML {
@ -19,4 +20,19 @@ HTMLSelectElement::~HTMLSelectElement()
{
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-select-options
RefPtr<HTMLOptionsCollection> const& HTMLSelectElement::options()
{
if (!m_options) {
m_options = HTMLOptionsCollection::create(*this, [](DOM::Element const& element) {
// https://html.spec.whatwg.org/multipage/form-elements.html#concept-select-option-list
// The list of options for a select element consists of all the option element children of
// the select element, and all the option element children of all the optgroup element children
// of the select element, in tree order.
return is<HTMLOptionElement>(element);
});
}
return m_options;
}
}