为了账号安全,请及时绑定邮箱和手机立即绑定

Android WebView 和 JavaScript 以编程方式单击按钮不起作用

Android WebView 和 JavaScript 以编程方式单击按钮不起作用

跃然一笑 2021-06-15 14:15:12
我有一个非常简单的用例,即以编程方式调用我的 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);


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信