热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于一个简单的webview中直接执行javascript函数的问题

坦白讲应该是不难的,但本人不会js所以开发起来有点难以下手,百度了很多的demo看了之后自己写完还是有问题不知道什么情况特来请教大家我自己是在android平台写的登陆

坦白讲应该是不难的,但本人不会js 所以开发起来有点难以下手 , 百度了很多的demo看了之后自己写完还是有问题 不知道什么情况 特来请教大家
我自己是在android平台写的
登陆地址: http://101.226.249.86:8080/jservice/#/SignIn (将这个地址用webview显示出来)
一.交互方式:

  1. 客户端网页中发起一个自定义url的请求,浏览器可以拦截到对应的请求;这一过程
    相当于网页给Webview 发起了一个事件通知,其中自定义URL请求格式为:


ccn-webkit-bridge://xxx?functiOnName=xx
其中functionName参数是回调Javascript函数的名字

  1. 接着webview中直接执行Javascript函数,获取到对应的参数;


  2. 执行相关的native操作.
    二.


客户端登录结束, 待服务器返回登录结果之后,执行如下的Javascript代码

1
/**


  • 该函数供 webkit 回调,返回 login 结果给 webkit


  • @return 注册 login 结果的 json 对象的字符串格式
    **/


  1. xxx() {


  2. null
    }


以上是人家给我的东西, 剩下都靠自己写
以下第一张图是登录页面,是一个webview, ,第二张是点击登录后的样子
图片描述

图片描述

附上自己的一部分代码 希望对答者有帮助,谢谢.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
webView.loadUrl("http://101.226.249.86:8080/jservice/#/SignIn");

        //启用支持Javascript  加上这句话才能使用Javascript方法

        WebSettings settings = webView.getSettings();

        settings.setJavascriptEnabled(true);

        //优先使用缓存

        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

        webView.addJavascriptInterface(new MyJavascriptInterface(), "getResult");

        webView.setWebViewClient(new WebViewClient() {

            @Override

            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器

                view.loadUrl(url);

                return false;

            }

        });

        //window.location.href = "ccn-webkit-bridge://did-login?functiOnName=getResult";

        //webView.addJavascriptInterface(new Object(), "getResult");



推荐阅读
author-avatar
你是我的小心肝啊哈哈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有