注意:这是scaloid,因此语法与Java略有不同,但所有类都是来自Java的常用Android类。
我使用以下方式初始化网页视图:
webView.settings.setJavaScriptEnabled(true)
webView.setWebChromeClient(new WebChromeClient)
然后我打电话
val jsUrl = "javascript:document.getElementById('" + getTagId(word) + "').innerHTML = '" + guess + "'"
webView.loadUrl(jsUrl)
其中getTagId(word)
是现有ID(我已对其进行了调试),guess
是一个短字符串,如"abc"
。
它在我的桌面浏览器中运行良好,但在webview中它取代了整个文档,而不是仅替换元素。
我尝试调试并确保通过用
替换调用来实际找到该元素"javascript:alert(document.getElementById('" + getTagId(word) + "').innerHTML)"
并显示包含正确内容的提醒!只有更换出错了。
这个错误让我抓狂:-(我错过了什么?
P.S。我正在开发这个开源项目:https://github.com/ilyakogan/gluckentext
答案 0 :(得分:0)
我仍然不知道为什么这不起作用,但我最后添加了一个JS函数并从原生Android代码调用它,而不是直接从本机代码调用getElementById
。
我将此添加到HTML:
<script>
function markSolved(id) { document.getElementById(id).className='solved'; }
</script>
然后在本机代码中写了这个(在我的情况下是Scala,在一般情况下是Java):
val jsUrl = "javascript:markSolved(" + getTagId(answeredWord) + ")"
webView.loadUrl(jsUrl)
答案 1 :(得分:0)
您可以在模块中包装自定义Js代码:
view.loadUrl("javascript:(function(){document.getElementById('uname').value = 'test';})()");
为我工作