混合app开发--js和webview之间的交互总结
使用场景:原生APP内嵌套H5页面,app使用的是webview框架进行嵌套
这样就存在两种情况
1.原生app调用H5的方法
2.H5调用app的方法
分别讲解下,其实app与H5之间的交互式非常简单的,都有成熟的解决方法,下面说下,这次项目中,我们用到的方法
app调用H5方法
其实就一句话,app在引入某个页面的时候可以直接调用这个页面的js方法,但是注意一点,js方法不能有多级嵌套,否则会调用失败
//直接调用可以成功
function fn(){
console.log("调用h5");
} //下面这种情况是调用不成功的
$(document).ready(function(){
function fn(){}//如果app调用这个方法是调用不到的
}); window.onload=function(){
function fn(){}//这个方法也是调用不到的
};
H5调用app的方法
var isMobile = {
Android: function () {
return navigator.userAgent.match(/Android/i) ? true : false;
},
iOS: function () {
return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false;
}
};
var handler = {
callHander: function (json) {
if (isMobile.iOS()) {
window.webkit.messageHandlers.control.postMessage(JSON.stringify(json))
}
if (isMobile.Android()) {
window.control.postMessage(JSON.stringify(json));
}
}
};
直接这样调用就可以了
handler.callHander({
'body':'share' //方法名,这个是和app端自行约定的
...参数写多少都是约定好的
});
这样就可以调用原生的方法了,经常H5的页面嵌套到app中,需要定义头部的导航的标题,和右上角显示的内容,这些其实都可以通过H5传递参数给app来定义的。
混合app开发--js和webview之间的交互总结的更多相关文章
- 混合app开发,h5页面调用ios原生APP的接口
混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H ...
- python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)
一.对象之间的交互 现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人.现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法.有了狗类,我们还 ...
- 混合APP开发-hybrid 升级流程
本文来自网易云社区 作者:王贝 目前大多数APP已经应用hybrid进混合开发,这不,我们的gacha APP这个版本已经开始使用hybrid来开发了,hybrid的优势这里就不多说了,这里主要讲一下 ...
- 什么是混合app开发
webApp 移动app 就是在浏览器中运行的web应用 (网页应用)开发成本低 体验差 不需要安装 NativeApp :用Android和object-C原生语言开发的应用 开发成本高 需要安装( ...
- Cordova+vue 混合app开发(一)创建Cordova项目
简介: Cordova包装你的HTML/JavaScript app到原生app容器中,可以让你访问每个平台设备的功能.这些功能通过统一的JavaScript API提供,让你轻松的编写一组代码运行在 ...
- 国内混合APP开发技术选型
http://www.sunzhongwei.com/weex-react-native-ionic-technology-selection 选谁? 企业级应用是要考虑性能和流畅度的, 如果只是做个 ...
- phoneGap+cordova+ionic混合app开发环境搭建
参考链接:http://www.w2 bc.com/article/177257 待补充
- 记录混合APP开发遇到的坑!!
1.在IOS中给body绑定click事件会失效 2.在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是 ...
- Android、JavaScript、WebView之间的交互学习
一.WebView调用Java //1.允许WebView加载jsmWebView.getSettings().setJavaScriptEnabled(true); //2.编写js的接口 ---- ...
随机推荐
- 《python3网络爬虫开发实战》第一章、开发环境配置-问题汇总
开发环境: VMware虚拟机 Ubuntu18.04 python3.6 (由于对vi操作水平有限,所以大部分都用的gedit进行文件编辑) 换源: 刚装上系统后换了好几个源,就清华源感觉好使点,别 ...
- Debian 系统安装 Nagios 服务器监控端
安装apt-get updateapt-get install nagios* perlapt-get install --no-install-recommends pnp4nagiosapt-ge ...
- Nagios 监控 Mysql
被监控机的Mysql监控创建专用数据库.专用数据库账户mysql -uroot -pcreate database nagios_monitor;grant select on nagios_moni ...
- 【CF865D】Buy Low Sell High(贪心)
[CF865D]Buy Low Sell High(贪心) 题面 洛谷 CF 题解 首先有一个\(O(n^2)\)的\(dp\)很显然,设\(f[i][j]\)表示前\(i\)天手中还有\(j\)股股 ...
- 【CF891C】Envy(最小生成树)
[CF891C]Envy(最小生成树) 题面 Codeforces 洛谷 题解 考虑\(MST\)的构建过程,对于所有权值相同的边一起考虑. 显然最终他们连出来的结果是固定的. 把连边改为把联通块联通 ...
- 跨SQL注入
概念 SQL Injection按照字面意思来翻译就是"SQL注射",常被叫做"SQL注入",它的含义就是利用某些数据库的外部接口把用户数据插入到实际数据库操作 ...
- TCP/IP 和 HTTP 的区别和联系是什么?
作者:车小胖链接:https://www.zhihu.com/question/38648948/answer/240006409来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 深入学习semaphore
深入学习semaphore 控制同时访问资源线程数 访问特定资源前,先使用acquire(1)获得许可,如果许可数量为0,该线程则一直阻塞,直到有可用许可. 访问资源后,使用release()释放许可 ...
- limits.conf文件工作原理
1. limits.conf 描述 limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so ...
- 利用sqlalchemy读取数据库 和pandas的Dataframe对象 互相生成
#导入pandas import pandas as pd import numpy as np #导入SqlAlchemy from sqlalchemy import create_engine ...