Примечание: Это скалоид, поэтому синтаксис немного отличается от Java, но все классы являются обычными классами Android из Java.Настройка innerHTML в веб-просмотре заменяет весь документ, а не только на элемент
Я инициализация WebView с помощью:
webView.settings.setJavaScriptEnabled(true)
webView.setWebChromeClient(new WebChromeClient)
, а затем я называю
val jsUrl = "javascript:document.getElementById('" + getTagId(word) + "').innerHTML = '" + guess + "'"
webView.loadUrl(jsUrl)
getTagId(word)
где находится существующий идентификатор (я отлаженное это) и guess
является короткой строкой, как "abc"
.
Он отлично работает в моем браузере рабочего стола, но в webview он заменяет весь документ вместо того, чтобы просто заменять элемент.
Я пытался отладки и убедитесь, что элемент действительно найден, заменив вызов с
"javascript:alert(document.getElementById('" + getTagId(word) + "').innerHTML)"
и это показывает предупреждение с правильным содержанием! Только замена идет не так.
Эта ошибка сводит меня с ума :-(Что я упускаю
PS Я работаю над этим открытым исходным кодом проекта: https://github.com/ilyakogan/gluckentext