File tree Expand file tree Collapse file tree
webview-compose/src/wasmJsMain/kotlin/io/github/kdroidfilter/webview/web Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11@file:OptIn(ExperimentalWasmJsInterop ::class )
2+
23package io.github.kdroidfilter.webview.web
34
45import org.w3c.dom.Element
@@ -12,11 +13,7 @@ fun evaluateScriptJs(
1213): String = js(
1314 // language=javascript
1415 """ {
15- try {
16- return element.contentWindow && element.contentWindow.eval ? String(element.contentWindow.eval(script)) : '';
17- } catch (err) {
18- return 'Error: ' + err.message;
19- }
16+ return element.contentWindow && element.contentWindow.eval ? String(element.contentWindow.eval(script)) : '';
2017 }"""
2118)
2219
Original file line number Diff line number Diff line change @@ -186,8 +186,8 @@ class WasmJsWebView(
186186 try {
187187 val result = evaluateScriptJs(element, script)
188188 callback?.invoke(result)
189- } catch (e : Exception ) {
190- callback?.invoke(" Error: ${e .message} " )
189+ } catch (t : Throwable ) {
190+ callback?.invoke(" Error: ${t .message} " )
191191 }
192192 }
193193 }
Original file line number Diff line number Diff line change @@ -41,8 +41,8 @@ class HtmlViewNavigator(
4141 try {
4242 val result = evaluateScriptJs(element, event.script)
4343 event.callback?.invoke(result)
44- } catch (e : Exception ) {
45- event.callback?.invoke(" Error: ${e .message} " )
44+ } catch (t : Throwable ) {
45+ event.callback?.invoke(" Error: ${t .message} " )
4646 }
4747 }
4848 is NavigationEvent .StopLoading -> element.contentWindow?.stop()
Original file line number Diff line number Diff line change 22
33package io.github.kdroidfilter.webview.web
44
5- import androidx.compose.runtime.Composable
6- import androidx.compose.runtime.LaunchedEffect
7- import androidx.compose.runtime.mutableStateOf
8- import androidx.compose.runtime.remember
9- import androidx.compose.runtime.rememberCoroutineScope
10- import androidx.compose.runtime.snapshotFlow
5+ import androidx.compose.runtime.*
116import androidx.compose.ui.Modifier
127import io.github.kdroidfilter.webview.jsbridge.JsMessage
138import io.github.kdroidfilter.webview.jsbridge.WebViewJsBridge
@@ -181,7 +176,30 @@ actual fun ActualWebView(
181176 }
182177 }
183178 }
184- is HtmlLoadingState .Finished -> state.loadingState = LoadingState .Finished
179+
180+ is HtmlLoadingState .Finished -> {
181+ state.loadingState = LoadingState .Finished
182+ state.webView?.nativeWebView?.element?.let { element ->
183+ try {
184+ state.pageTitle = evaluateScriptJs(
185+ element,
186+ " document.title"
187+ )
188+ state.lastLoadedUrl = evaluateScriptJs(
189+ element,
190+ " document.location"
191+ )
192+ } catch (t: Throwable ) {
193+ KLogger .e(
194+ t = t,
195+ tag = " ActualWebView"
196+ ) {
197+ " Error getting document from iframe: ${t.message} "
198+ }
199+ }
200+ }
201+ }
202+
185203 is HtmlLoadingState .Initializing -> state.loadingState = LoadingState .Initializing
186204 }
187205 }
You can’t perform that action at this time.
0 commit comments