diff --git a/.changes/fix-metadata-update.md b/.changes/fix-metadata-update.md new file mode 100644 index 00000000000..d21507a03a7 --- /dev/null +++ b/.changes/fix-metadata-update.md @@ -0,0 +1,5 @@ +--- +"tauri": patch +--- + +Fixes access to the `WebviewWindow.getByLabel` function in a `tauri://window-created` event listener. diff --git a/core/tauri/src/event.rs b/core/tauri/src/event.rs index 50f4a3df221..d19fed996eb 100644 --- a/core/tauri/src/event.rs +++ b/core/tauri/src/event.rs @@ -327,17 +327,26 @@ pub fn listen_js( handler: String, ) -> String { format!( - "if (window['{listeners}'] === void 0) {{ - Object.defineProperty(window, '{listeners}', {{ value: Object.create(null) }}); - }} - if (window['{listeners}'][{event}] === void 0) {{ - Object.defineProperty(window['{listeners}'], {event}, {{ value: [] }}); - }} - window['{listeners}'][{event}].push({{ - id: {event_id}, - windowLabel: {window_label}, - handler: {handler} - }}); + " + (function () {{ + if (window['{listeners}'] === void 0) {{ + Object.defineProperty(window, '{listeners}', {{ value: Object.create(null) }}); + }} + if (window['{listeners}'][{event}] === void 0) {{ + Object.defineProperty(window['{listeners}'], {event}, {{ value: [] }}); + }} + const eventListeners = window['{listeners}'][{event}] + const listener = {{ + id: {event_id}, + windowLabel: {window_label}, + handler: {handler} + }}; + if ({event} == 'tauri://window-created') {{ + eventListeners.splice(eventListeners.length - 1, 0, listener) + }} else {{ + eventListeners.push(listener); + }} + }})() ", listeners = listeners_object_name, event = event,