Javascript 检测android webview中的html按钮单击

Javascript 检测android webview中的html按钮单击,javascript,android,html,webview,android-webview,Javascript,Android,Html,Webview,Android Webview,因此,在我的Android应用程序中,我打开了一个由表单和按钮(提交)组成的webview。按钮元素如下所示: { ... myWebview.getSettings().setJavaScriptEnabled(true); myWebview.getSettings().setDomStorageEnabled(true); myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");

因此,在我的Android应用程序中,我打开了一个由表单和按钮(提交)组成的webview。按钮元素如下所示:

{
...

myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");

myWebview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        loadMyEvent(clickListener());
    }

    private void loadMyEvent(String javascript){
        myWebview.loadUrl("javascript:"+javascript);
    }

    private String clickListener(){
        return getMyButtons()+ "for(var i = 0; i < buttons.length; i++){\n" +
                "\tbuttons[i].onclick = function(){ console.log('click worked.'); ButtonCheck.boundMethod('button clicked'); };\n" +
                "}";
    }

    private String getMyButtons(){
        return "var buttons = document.getElementsByClassName('your-button-class'); console.log(buttons.length + ' buttons');\n";
    }
});

myWebview.loadUrl("http://....");

...
}


class MyJavaScriptInterface {

    private Context context;

    MyJavaScriptInterface(Context ctx) {
        context = ctx;
    }

    @JavascriptInterface
    public void boundMethod(String html) {
        //Check internet connection
    }

}

保存
您必须使用如下javascript界面:

{
...

myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");

myWebview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        loadMyEvent(clickListener());
    }

    private void loadMyEvent(String javascript){
        myWebview.loadUrl("javascript:"+javascript);
    }

    private String clickListener(){
        return getMyButtons()+ "for(var i = 0; i < buttons.length; i++){\n" +
                "\tbuttons[i].onclick = function(){ console.log('click worked.'); ButtonCheck.boundMethod('button clicked'); };\n" +
                "}";
    }

    private String getMyButtons(){
        return "var buttons = document.getElementsByClassName('your-button-class'); console.log(buttons.length + ' buttons');\n";
    }
});

myWebview.loadUrl("http://....");

...
}


class MyJavaScriptInterface {

    private Context context;

    MyJavaScriptInterface(Context ctx) {
        context = ctx;
    }

    @JavascriptInterface
    public void boundMethod(String html) {
        //Check internet connection
    }

}
{
...
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
addJavascriptInterface(新的MyJavaScriptInterface(this),“ButtonCheck”);
myWebview.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
loadMyEvent(clickListener());
}
私有void loadMyEvent(字符串javascript){
loadUrl(“javascript:+javascript”);
}
私有字符串clickListener(){
返回(var i=0;i