Kotlin - JavascriptInterface - модификация DOM, стирающая весь HTML - PullRequest
0 голосов
/ 02 июня 2019

В 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...