From 0781a75318dcc834064b1706d902d8375a465d58 Mon Sep 17 00:00:00 2001 From: Adrian Date: Mon, 20 Oct 2025 09:45:14 +0200 Subject: [PATCH] only inject js bridge when it is undefined --- .../com/multiplatform/webview/web/IWebView.kt | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/webview/src/commonMain/kotlin/com/multiplatform/webview/web/IWebView.kt b/webview/src/commonMain/kotlin/com/multiplatform/webview/web/IWebView.kt index 588c514a..0d4c1e41 100644 --- a/webview/src/commonMain/kotlin/com/multiplatform/webview/web/IWebView.kt +++ b/webview/src/commonMain/kotlin/com/multiplatform/webview/web/IWebView.kt @@ -179,28 +179,30 @@ interface IWebView { } val initJs = """ - window.$jsBridgeName = { - callbacks: {}, - callbackId: 0, - callNative: function (methodName, params, callback) { - var message = { - methodName: methodName, - params: params, - callbackId: callback ? window.$jsBridgeName.callbackId++ : -1 - }; - if (callback) { - window.$jsBridgeName.callbacks[message.callbackId] = callback; + if (typeof window.$jsBridgeName === 'undefined') { + window.$jsBridgeName = { + callbacks: {}, + callbackId: 0, + callNative: function (methodName, params, callback) { + var message = { + methodName: methodName, + params: params, + callbackId: callback ? window.$jsBridgeName.callbackId++ : -1 + }; + if (callback) { + window.$jsBridgeName.callbacks[message.callbackId] = callback; + } + window.$jsBridgeName.postMessage(JSON.stringify(message)); + }, + onCallback: function (callbackId, data) { + var callback = window.$jsBridgeName.callbacks[callbackId]; + if (callback) { + callback(data); + delete window.$jsBridgeName.callbacks[callbackId]; + } } - window.$jsBridgeName.postMessage(JSON.stringify(message)); - }, - onCallback: function (callbackId, data) { - var callback = window.$jsBridgeName.callbacks[callbackId]; - if (callback) { - callback(data); - delete window.$jsBridgeName.callbacks[callbackId]; - } - } - }; + }; + } """.trimIndent() evaluateJavaScript(initJs) }