猿问

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

我有一个非常简单的用例,即以编程方式调用我的 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 上且不安全,不确定它是否相关。


我已经尝试了另一个带有登录字段的公共页面,并且相同的代码有效并且按钮被成功点击。


跃然一笑
浏览 375回答 2
2回答

慕尼黑5688855

您可以通过这种方式处理 webview 按钮单击@JavascriptInterfacepublic void handleClick(String id) {&nbsp; &nbsp; startActivity(new Intent(mContext, MainActivity.class));}在 JavaScript 中Android.handleClick(_id);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答