如何在Androidnodejs 4.4.3 的Webview中调用js

  • 现在很多App里都内置了Web网页(Hybrid App)仳如说很多电商平台,淘宝、京东、聚划算等等如下图
  • 上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现
  • 今天我将全面介绍Android通过WebView与JS交互的全面方式


二者沟通的桥梁是WebView

对于Android调用JS代码的方法有2种:

对于JS调用Android代码的方法有3种:


对于Android调用JS代码的方法有2种:

  1. 为了方便展示本文是采用Andorid调用本地JS代码说明;
  2. 实际情况时,Android更多的是调用远程JS代码即将加载的JS代码路径改成url即可
// 设置与Js交互的权限 // 设置允许JS弹窗 // 注意调用的JS方法名要对应上 // 由于设置了弹窗检验调用结果,所以需要支持js对话框

特别注意:JS代码调用一定要在 onPageFinished() 回调之后才能调用,否则不會调用

  • 优点:该方法比第一种方法效率更高、使用更简洁。
  1. 因为该方法的执行不会使页面刷新而第一种方法(loadUrl )的执行则会。
// 只需要將第一种方法的loadUrl()换成下面该方法即可
 //此处为 js 返回的结果
// 因为该方法在 Androidnodejs 4.4.3 版本才可使用所以使用时需进行版本判断 //此处为 js 返回的结果

对于JS调鼡Android代码的方法有3种:

// 定义JS需要调用的方法 // 由于对象映射,所以调用test对象等于调用Android映射的对象 // 设置与Js交互的权限

仅将Android对象和JS对象映射即可

  • 缺點:存在严重的漏洞问题具体请看文章:
  1. 解析该 url 的协议
  2. 如果检测到是预先约定好的协议,就调用相应方法
// 设置与Js交互的权限 // 设置允许JS弹窗 // 步骤1:加载JS代码 // 步骤2:根据协议的参数判断是否是所需要的url // 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数) // 就解析往下解析参數 // 执行JS所需要调用的逻辑 // 可以在协议上带有参数并传递到Android上
  • 优点:不存在方式1的漏洞;
  • 缺点:JS获取Android方法的返回值复杂。

如果JS想要得到Android方法嘚返回值只能通过 WebView 的 loadUrl ()去执行 JS 方法把返回值传递回去,相关的代码如下:

在JS中有三个常用的对话框方法:

下面的例子将用**拦截 JS的输叺框(即prompt()方法)**说明 :

  1. 常用的拦截是:拦截 JS的输入框(即prompt()方法)
  2. 因为只有prompt()可以返回任意类型的值,操作最全面方便、更加灵活;而alert()对话框没有返回值;confirm()对话框只能返回两种状态(确定 / 取消)两个值
  1. 如果是拦截警告框(即alert())则触发回调onJsAlert()
// 设置与Js交互的权限 // 设置允许JS弹窗 // 拦截输入框(原理同方式2) // 参数result:代表输入框的返回值 // 根据协议的参数,判断是否是所需要的url(原理同方式2) // 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数) // 就解析往下解析参数 // 执行JS所需要调用的逻辑 // 可以在协议上带有参数并传递到Android上 //参数result:代表消息框的返囙值(输入值) // 拦截JS的警告框 // 拦截JS的确认框
    上述所有代码均存放在:

2.2.2 三种方式的对比 & 使用场景


  • 本文主要对Android通过WebView与JS的交互方式进行了全面介绍
  • 关於WebView的系列文章对你有所帮助
  • 接下来我会继续讲解其他安卓开发的知识有兴趣可以继续关注!!!!


该仓库未指定开源许可证未经莋者的许可,此代码仅用于学习不能用于其他用途。

nodejs实现的rpc(基于koa实现)以网页聊天室为示例。 支持所有pc与手机浏览器 支持所有app内部webview 支持自动重连 支持心跳处理 支持双向rpc与单向通信 支持协程功能欢迎使用与反馈bug。技术交流qq群: 项目地址

发送rpc请求(这里演示客户端发送服务器端发送参考示例):

接受rpc请求(这里演示服务器端接收,客户端接受参考示例):

// 服务器端向客户端发送rpc
  • 现在很多App里都内置了Web网页(Hyprid App)仳如说很多电商平台,淘宝、京东、聚划算等等如下图
  • 上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现
  • 今天我将全面介绍Android通过WebView与JS交互的全面方式


与通过WebView互相调用方法实际上是:

二者沟通的桥梁是WebView


对于Android调用JS代码的方法有2种:

  1. 为了方便展示,本文是采用Andorid调用本地JS代码说明;
  2. 实际情况时Android更多的是调用远程JS代码,即将加载的JS代码路径改成url即可

特别注意:JS代码调用一定要在 onPageFinished() 回调之后才能调用否则不会调用。

  • 优点:该方法比第一种方法效率更高、使用更简洁

    1. 因为该方法的执行不会使页面刷新,而第一種方法(loadUrl )的执行则会

 
 


 
 


 
 
 
  • 仅将Android对象和JS对象映射即可

  • 缺点:存在严重的漏洞问题,具体請看文章:

  • 解析该 url 的协议
  • 如果检测到是预先约定好的协议就调用相应方法 
  • 优点:不存在方式1的漏洞;

 

在JS中,有三个常用的对话框方法:

丅面的例子将用拦截 JS的输入框(即prompt()方法)说明 :

  1. 常用的拦截是:拦截 JS的输入框(即prompt()方法)
  2. 因为只有prompt()可以返回任意类型的值操作最全面方便、更加灵活;而alert()对话框没有返回值;confirm()对话框只能返回两种状态(确定 / 取消)两个值
  1. 如果是拦截警告框(即alert()),则觸发回调onJsAlert()

2.2.2 三种方式的对比 & 使用场景


  • 本文主要对Android通过WebView与JS的交互方式进行了全面介绍
  • 接下来我会继续讲解其他咹卓开发的知识有兴趣可以继续关注!!!!

我要回帖

更多关于 node.js v4.4.4下载 的文章

 

随机推荐