`

android,js单向调用和页面加载

阅读更多

公司根据需要要在webview实现验证码的判断(验证码使用的某公司的验证码,只有web端的,其验证码是广告或者公益消息,怎么做都不知道,既然BOSS要求,那就研究咯,其验证码的过程就是进入webview界面显示验证码,点击提交按钮提交填写的表单,后续判断。)

在手机端肯定是不要其提交按钮的,所以在web端注释掉表单中的提交(submit),但是表单还是需要提交怎么办,就在web页面写入js提交表单的方法。

首先就是要在web端写入js提交表单的方法,在android端通过按钮调用js提交表单。web端js代码如下
<script type="text/jscript">
function addressadd()

  window.document.getElementById("formCode").submit()

     //$('formCode').submit(); //formCode是上面表单的ID
}
//addressadd();
</script>

android调用js的代码:myweb.loadUrl("javascript:addressadd()");//addressadd()是js的方法名,该调用代码写在button的click事件中。

提交这个表单后会执行一些判断,根绝判断结果跳转不同的界面,这些界面的url中包含我所需要的信息,简单讲就是把手机端要获取的数据写在页面的url中(还有一种方法是通过android js的双向调用,但是项目需要看到另一个页面,所以就没这样写。)

在android端解析url地址获取数据的代码如下:

myweb.setWebViewClient(new WebViewClient() {
  public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            if (url.indexOf("example")>0) {
             System.out.println("首页解析"); //解析地址中的字段
               }

           //这里可以写入页面加载完成后的一些事情,比如说向服务器发送数据等
            }
            super.onPageFinished(view, url);
        }});

上面代码在页面加载完成后就可以解析出地址中的数据了,还有一种是用

   webview.setWebViewClient(new WebViewClient() {
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
           
           if(url.indexOf("telephone")>0){

          //获取数据后的方法
            return true;
           }
           view.loadUrl(url);
           return false;
          }
          });

这种方法在有些版本的android系统中不能使用,可以在网上浏览一下,介绍帖子很多。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics