use evaluateJavascript

This commit is contained in:
5ec1cff
2024-10-04 12:04:43 +08:00
parent d26ec4edec
commit a8f363c12e

View File

@@ -69,13 +69,13 @@ class WebViewInterface(
val stderr = result.err.joinToString(separator = "\n") val stderr = result.err.joinToString(separator = "\n")
val jsCode = val jsCode =
"javascript: (function() { try { ${callbackFunc}(${result.code}, ${ "(function() { try { ${callbackFunc}(${result.code}, ${
JSONObject.quote( JSONObject.quote(
stdout stdout
) )
}, ${JSONObject.quote(stderr)}); } catch(e) { console.error(e); } })();" }, ${JSONObject.quote(stderr)}); } catch(e) { console.error(e); } })();"
webView.post { webView.post {
webView.loadUrl(jsCode) webView.evaluateJavascript(jsCode, null)
} }
} }
@@ -101,13 +101,13 @@ class WebViewInterface(
val emitData = fun(name: String, data: String) { val emitData = fun(name: String, data: String) {
val jsCode = val jsCode =
"javascript: (function() { try { ${callbackFunc}.${name}.emit('data', ${ "(function() { try { ${callbackFunc}.${name}.emit('data', ${
JSONObject.quote( JSONObject.quote(
data data
) )
}); } catch(e) { console.error('emitData', e); } })();" }); } catch(e) { console.error('emitData', e); } })();"
webView.post { webView.post {
webView.loadUrl(jsCode) webView.evaluateJavascript(jsCode, null)
} }
} }
@@ -130,14 +130,14 @@ class WebViewInterface(
completableFuture.thenAccept { result -> completableFuture.thenAccept { result ->
val emitExitCode = val emitExitCode =
"javascript: (function() { try { ${callbackFunc}.emit('exit', ${result.code}); } catch(e) { console.error(`emitExit error: \${e}`); } })();" "(function() { try { ${callbackFunc}.emit('exit', ${result.code}); } catch(e) { console.error(`emitExit error: \${e}`); } })();"
webView.post { webView.post {
webView.loadUrl(emitExitCode) webView.evaluateJavascript(emitExitCode, null)
} }
if (result.code != 0) { if (result.code != 0) {
val emitErrCode = val emitErrCode =
"javascript: (function() { try { var err = new Error(); err.exitCode = ${result.code}; err.message = ${ "(function() { try { var err = new Error(); err.exitCode = ${result.code}; err.message = ${
JSONObject.quote( JSONObject.quote(
result.err.joinToString( result.err.joinToString(
"\n" "\n"
@@ -145,7 +145,7 @@ class WebViewInterface(
) )
};${callbackFunc}.emit('error', err); } catch(e) { console.error('emitErr', e); } })();" };${callbackFunc}.emit('error', err); } catch(e) { console.error('emitErr', e); } })();"
webView.post { webView.post {
webView.loadUrl(emitErrCode) webView.evaluateJavascript(emitErrCode, null)
} }
} }
}.whenComplete { _, _ -> }.whenComplete { _, _ ->