From b060f6ea80db0e95042e17d610f5e42ef218b2f1 Mon Sep 17 00:00:00 2001 From: Face <69168154+face-hh@users.noreply.github.com> Date: Wed, 10 Sep 2025 21:36:53 +0300 Subject: [PATCH] fix event attach too early crashing --- flumi/Scripts/B9/HTMLParser.gd | 12 ++++++++++++ flumi/Scripts/Utils/Lua/DOM.gd | 3 +++ 2 files changed, 15 insertions(+) diff --git a/flumi/Scripts/B9/HTMLParser.gd b/flumi/Scripts/B9/HTMLParser.gd index 0144b66..472d07d 100644 --- a/flumi/Scripts/B9/HTMLParser.gd +++ b/flumi/Scripts/B9/HTMLParser.gd @@ -367,6 +367,18 @@ func register_dom_node(element: HTMLElement, node) -> void: var element_id = element.get_id() if element_id.length() > 0: parse_result.dom_nodes[element_id] = node + else: + var temp_key = "_element_" + str(element.get_instance_id()) + parse_result.dom_nodes[temp_key] = node + + node.set_meta("html_element", element) + +func update_dom_node_id(element: HTMLElement, new_id: String) -> void: + var temp_key = "_element_" + str(element.get_instance_id()) + if parse_result.dom_nodes.has(temp_key): + var node = parse_result.dom_nodes[temp_key] + parse_result.dom_nodes.erase(temp_key) + parse_result.dom_nodes[new_id] = node func find_first(tag: String, attribute: String = "") -> HTMLElement: var results = find_all(tag, attribute) diff --git a/flumi/Scripts/Utils/Lua/DOM.gd b/flumi/Scripts/Utils/Lua/DOM.gd index 299162d..700a4b9 100644 --- a/flumi/Scripts/Utils/Lua/DOM.gd +++ b/flumi/Scripts/Utils/Lua/DOM.gd @@ -583,6 +583,9 @@ static func create_element_wrapper(vm: LuauVM, element: HTMLParser.HTMLElement, if element_id.is_empty(): element_id = lua_api.get_or_assign_element_id(element) element.set_attribute("id", element_id) + + # Update the DOM node registration with the new ID + lua_api.dom_parser.update_dom_node_id(element, element_id) vm.lua_pushstring(element_id) vm.lua_setfield(-2, "_element_id")