使用Android Studio我试图在不是我的网页的登录表单中设置文本框的值。
这是我用来在页面上工作的webView:
final WebView webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
webView.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
webView.loadUrl("javascript: document.getElementById('j_password').value = 'something'");
}
});
webView.loadUrl("http://sg18224.scuolanext.info/");
问题是当页面加载完毕而不是设置文本框值时,整个页面变为白色,它只显示我试图设置为值的字符串(在这种情况下"某些" )。 如果我在这样的警报中包含js行:
webView.loadUrl("javascript: alert(document.getElementById('j_password').value = 'something')");
它有效!但也会显示我不想显示的提醒。
答案 0 :(得分:1)
这可以帮到你:
final String js = "javascript:document.getElementById('j_password').value='something';";
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (Build.VERSION.SDK_INT >= 19) {
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) { }
});
} else {
view.loadUrl(js);
}
}
});
答案 1 :(得分:0)
我不确定这个答案,但你可以尝试一下。通常它应该是答案。很久没有与javascript交互了。
你可以尝试
webView.loadUrl("javascript: document.getElementById('j_password').innerHTML = 'something'");
如果不起作用,请发表评论。