在 WebView 中使用 js 注入设置 TextBox 值
Set TextBox value with js injection in a WebView
使用 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/");
问题是当页面完成加载而不是设置文本框值时,整个页面变成白色并且它只显示我试图设置为值的字符串(在本例中 "something") .
如果我在这样的警报中包含 js 行:
webView.loadUrl("javascript: alert(document.getElementById('j_password').value = 'something')");
有效!但也会显示我不想显示的警报。
我不确定这个答案,但你可以试试。通常它应该是答案。不过好久没和javascript互动了。
你可以试试
webView.loadUrl("javascript: document.getElementById('j_password').innerHTML = 'something'");
如果它不起作用,请发表评论。
这应该对您有帮助:
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);
}
}
});
使用 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/");
问题是当页面完成加载而不是设置文本框值时,整个页面变成白色并且它只显示我试图设置为值的字符串(在本例中 "something") . 如果我在这样的警报中包含 js 行:
webView.loadUrl("javascript: alert(document.getElementById('j_password').value = 'something')");
有效!但也会显示我不想显示的警报。
我不确定这个答案,但你可以试试。通常它应该是答案。不过好久没和javascript互动了。
你可以试试
webView.loadUrl("javascript: document.getElementById('j_password').innerHTML = 'something'");
如果它不起作用,请发表评论。
这应该对您有帮助:
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);
}
}
});