在Android中,如何使用Javascript在WebView中设置编辑框的值

wwn*_*gel 6 javascript android dom textbox

我了解如何在WebView中设置编辑框的值,以及在使用Javascript的PC上的浏览器中设置值.

它基本上首先找出编辑框的ID(文本),然后使用以下方法设置值:在PC上:

document.getElementById('xxxxxxxx').value = 'test'
Run Code Online (Sandbox Code Playgroud)

在Android中:

mWebView.loadUrl("javascript: document.getElementById('xxxxxxxx').value = 'test'");
Run Code Online (Sandbox Code Playgroud)

这个脚本在PC上运行,但是当我在WebView.loadUrl中调用脚本时,它只是覆盖我的整个页面以"测试".

这对我来说很奇怪,因为下面的android代码可以在单选按钮上运行,但是当它出现在编辑框中时,它就会失败.

mWebView.loadUrl("javascript: document.getElementById('xxxxxxxx').checked = true");
Run Code Online (Sandbox Code Playgroud)

你能帮我分析一下可能的原因吗?非常感谢.

为了说清楚,我在WebViewClient.onPageFinished(WebView视图,String url)中运行javascript代码.因此WebView应该完全加载.这也很有意义,因为我可以检查单选按钮.

wwn*_*gel 23

问题已经解决了.这是因为我在java代码中调用javascript的方式.

代码就像

mWebView.loadUrl("javascript: [your javascript code]");
Run Code Online (Sandbox Code Playgroud)

有时工作,但它并不适用于所有情况.当我尝试在webview中设置文本框时,至少它不适用于以下情况:

mWebView.loadUrl("javascript: document.getElementById('xxxxxxxx').value= 'test'");
Run Code Online (Sandbox Code Playgroud)

但是如果你把javascript称为函数它应该有效:

mWebView.loadUrl("javascript: (function() {document.getElementById('xxxxxxxx').value= 'test';}) ();" );
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.希望它有所帮助.