From efc7b9d4a565485a9db35d8c8c165cbdbfe6bfe3 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Mon, 16 Jun 2025 19:56:19 +0800 Subject: [PATCH] Add comment explaining why we're walking the form the way we are --- src/browser/xhr/form_data.zig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/browser/xhr/form_data.zig b/src/browser/xhr/form_data.zig index ed4782ed..48e03ad3 100644 --- a/src/browser/xhr/form_data.zig +++ b/src/browser/xhr/form_data.zig @@ -115,6 +115,14 @@ const EntryIterable = iterator.Iterable(kv.EntryIterator, "FormDataEntryIterator // TODO: handle disabled fieldsets fn collectForm(form: *parser.Form, submitter_: ?*parser.ElementHTML, page: *Page) !kv.List { const arena = page.arena; + + // Don't use libdom's formGetCollection (aka dom_html_form_element_get_elements) + // It doesn't work with dynamically added elements, because their form + // property doesn't get set. We should fix that. + // However, even once fixed, there are other form-collection features we + // probably want to implement (like disabled fieldsets), so we might want + // to stick with our own walker even if fix libdom to properly support + // dynamically added elements. const node_list = try @import("../dom/css.zig").querySelectorAll(arena, @alignCast(@ptrCast(form)), "input,select,button,textarea"); const nodes = node_list.nodes.items;