浏览代码

fix(core): update metadata before window-created listeners, closes #5191 (#5458)

Lucas Fernandes Nogueira 2 年之前
父节点
当前提交
e00b1e5f94
共有 2 个文件被更改,包括 25 次插入11 次删除
  1. 5 0
      .changes/fix-metadata-update.md
  2. 20 11
      core/tauri/src/event.rs

+ 5 - 0
.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.

+ 20 - 11
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,