Javascript 如何在Android WebView中获取HTML页面元素(按钮、输入、图像)

Javascript 如何在Android WebView中获取HTML页面元素(按钮、输入、图像),javascript,android,html,webview,Javascript,Android,Html,Webview,我正在Web视图中加载联机html页面,并希望根据从html联机页面(而不是从本地html页面)单击的特定按钮加载活动 我发现了一些东西,但这不符合我的要求 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView)

我正在Web视图中加载联机html页面,并希望根据从html联机页面(而不是从本地html页面)单击的特定按钮加载活动

我发现了一些东西,但这不符合我的要求

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);
    webView.setHorizontalScrollBarEnabled(false);
    webView.loadUrl("https://accounts.google.com/DisplayUnlockCaptcha");
    webView.setBackgroundColor(0x00000000);

    webView.setOnTouchListener(new View.OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
             WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
                Log.i("TESTING In OnTouch ", "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType()+
                        "\t\t Ancher Tag = " +HitTestResult.SRC_ANCHOR_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.UNKNOWN_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.ANCHOR_TYPE
                        );
             return false;
        }
    });
}
HitTestResult类只有两个方法

getExtra():它返回字符串。字符串包含由用户单击的HTML元素

getType():它返回整数。它用于标识用户单击的HTML元素

    public class MyWebView extends Activity {
        /** Called when the activity is first created. */
        String TAG = this.getClass().getSimpleName();
        WebView wv;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            wv = (WebView) findViewById(R.id.MyWebView);
            wv.getSettings().setJavaScriptEnabled(true);
            wv.setWebViewClient(new VideoWebViewClient());
            wv.getSettings().setUserAgentString("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
            wv.loadUrl("http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio");
            wv.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    WebView.HitTestResult hr = ((WebView)v).getHitTestResult();

                    Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());
                    return false;
                }
            });
        }
        private class VideoWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

                return false;
            }

        }

    }

如果您可以为HTML页面编码,那么可以使用javascript。在这里看到我的答案,你可以使用本地HTML而不是在线页面,因为我尝试长时间使用getExtra,它只返回以下内容。getExtra=null类型=0。我需要单击按钮的元素ID。是否在代码中有任何其他更改来存档结果。以上代码在我这边不起作用。任何其他人面对同样的问题,你们的指导会让我轻松。期待你的回应。
    public class MyWebView extends Activity {
        /** Called when the activity is first created. */
        String TAG = this.getClass().getSimpleName();
        WebView wv;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            wv = (WebView) findViewById(R.id.MyWebView);
            wv.getSettings().setJavaScriptEnabled(true);
            wv.setWebViewClient(new VideoWebViewClient());
            wv.getSettings().setUserAgentString("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
            wv.loadUrl("http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio");
            wv.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    WebView.HitTestResult hr = ((WebView)v).getHitTestResult();

                    Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());
                    return false;
                }
            });
        }
        private class VideoWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

                return false;
            }

        }

    }