`

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系统中不能使用,可以在网上浏览一下,介绍帖子很多。

 

分享到:
评论

相关推荐

    android不使用webview与js交互

    Android应用可以调用服务器上的API,这些API由Node.js或其他后端服务提供,执行JavaScript代码并返回结果。这种方式增加了网络延迟,但避免了在客户端解析JavaScript的开销。 4. **本地服务与WebSocket** 创建一个...

    android webview js交互

    JavaScript到Android的调用是单向的,但Android可以主动调用JavaScript。这通常用于更新UI或者执行特定操作。我们可以使用`evaluateJavascript()`方法: ```java webView.evaluateJavascript("javascript:...

    WebViewAndJs

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。"WebViewAndJs"这个主题正是围绕如何在Android中利用WebView与JavaScript进行交互来展开的。当我们构建混合式移动应用...

    react基础与进阶部分笔记

    4. **生命周期方法**:React组件有多个生命周期方法,如`componentDidMount`、`componentDidUpdate`和`componentWillUnmount`,分别在组件挂载、更新和卸载时调用,用于执行特定操作。 5. **虚拟DOM**:React使用...

    WebViewNativeBridge,.zip

    在移动应用开发中,WebView作为一款强大的组件,常被用于加载HTML、CSS和JavaScript内容,为Android和iOS应用提供丰富的用户体验。然而,纯Web界面往往无法充分利用手机硬件特性和系统功能,此时就需要与原生平台...

    React开发实战

    9. **React性能优化**:React通过虚拟DOM和shouldComponentUpdate避免不必要的渲染,但还可以通过PureComponent、React.memo、按需加载(Code Splitting)和优化状态更新等手段进一步提升性能。 10. **React Native...

    REACT NATIVE大型项目通用化架构.zip

    React Native允许开发者用Objective-C、Swift(iOS)或Java、Kotlin(Android)编写原生代码,然后在JavaScript中调用。 总结,"REACT NATIVE大型项目通用化架构"可能涵盖了上述所有方面,旨在指导开发者如何构建...

    react全套资源

    - React的概念也扩展到了移动应用开发,React Native允许开发者使用React和JavaScript开发原生iOS和Android应用。 8. **深入REACT技术栈**: - 这个部分可能涉及到React与其他库和技术的结合,如Redux、Webpack、...

    com.realnetworks.callplanner:呼叫规划师v2.0

    3. Webpack或Parcel:作为模块打包工具,它们将JavaScript代码及其依赖打包成优化过的单一文件,便于应用加载和运行。 五、开发流程与最佳实践 1. 开发环境搭建:利用npm或yarn管理依赖,设置ESLint和Prettier进行...

    miCRM_frontend:使用React Native的miCRM应用程序的前端

    7. **第三方库和插件**:miCRM可能使用了各种React Native社区提供的第三方库,如用于导航的React Navigation,用于处理日期时间的moment.js,或者用于图片加载的react-native-image-picker等,这些库能增强功能并...

    gostack-desafio04:学习React Native概念的项目

    React Native 是一个开源框架,由Facebook开发并维护,它允许开发者使用JavaScript和React来构建原生移动应用程序。这个“gostack-desafio04”项目显然是一个学习React Native概念的挑战,旨在帮助开发者深入理解...

    flutter_gank

    通过Redux,`flutter_gank`可以实现单向数据流,保持应用状态的一致性,有利于调试和测试。 3. **Android和Dart的结合**: `flutter_gank`使用Dart语言编写,Dart是Google开发的一种面向对象的、垃圾回收的编程...

    concepts-challenge-react-native:训练营挑战3,级别1(React Native Concepts)

    6. **生命周期方法**:React组件有特定的生命周期方法,如`componentDidMount`、`shouldComponentUpdate`和`componentDidUpdate`,这些方法在组件的不同阶段被调用,用于执行特定任务,如初始化数据加载、性能优化等...

    REACT开始

    每个组件都有自己的状态和属性,可以像函数一样调用。 - **虚拟DOM**:React使用虚拟DOM来提高性能。当组件状态改变时,React会计算出最小的DOM变更,从而减少对真实DOM的操作,提升应用性能。 2. **React的创建...

Global site tag (gtag.js) - Google Analytics