В kotlin у меня есть обратный вызов JS в WebView.После загрузки WebView я вызываю JavaScript
loadUrl("javascript: + JSInterface.foo('bar');")
, и этот JavaScript вызывает метод foo:
@JavascriptInterface
fun foo(valueStr: String) {
Completable.fromAction {
webView.loadUrl("javascript:" +
"if (document.getElementById('bar') !== null) {" +
" document.getElementById('bar').textContent = 'bar';" +
"}")
}
.observeOn(Schedulers.newThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe({}, Throwable::printStackTrace)
}
Метод foo
вызывается правильно, но приведенный выше код стирает весь DOM и все, что яможно увидеть "бар" внутри веб-просмотра.Структура моей страницы
<!doctype html>
<body>
<div id="foo">....</div>
<table><tr><td id="bar">This should change to bar</td></tr></table>
</body>
Что может быть не так?Тот же код работает нормально, если вызывается из JS или из веб-просмотра на основе iOS WebKit.