我有一个非常简单的用例,即以编程方式调用我的 webview 中加载的网页按钮。下面是代码webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAppCacheEnabled(false); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { //super.onPageFinished(view, url); switch (view.getOriginalUrl()){ case Properties.LOGIN_URL: webView.evaluateJavascript( "javascript:" + "var usernameField = document.getElementById('loginUserName');" + "usernameField.value = '" + Properties.USERNAME + "';" + "var passwordField = document.getElementById('loginPassword');" + "passwordField.value = '" + Properties.PASSWORD + "';", null ); webView.evaluateJavascript( "javascript:" + "document.getElementById('loginButton').click();", new ValueCallback<String>() { @Override public void onReceiveValue(String s) { } } ); break; } } });view.loadUrl(Properties.LOGIN_URL);用户名和密码字段注入工作正常,但执行按钮单击的代码不起作用。我已经搜索了很多并尝试了很多但没有运气,这甚至可能吗?编辑:我正在访问的 URL 是我们组织的私有 URL,位于 http 上且不安全,不确定它是否相关。我已经尝试了另一个带有登录字段的公共页面,并且相同的代码有效并且按钮被成功点击。
2 回答

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
您可以通过这种方式处理 webview 按钮单击
@JavascriptInterface
public void handleClick(String id) {
startActivity(new Intent(mContext, MainActivity.class));
}
在 JavaScript 中
Android.handleClick(_id);
添加回答
举报
0/150
提交
取消