混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互;

  混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H5页面,而且运行机制也是能够同步运行;但ios上就没那么容易了;、

在此我就不说兼容安卓的问题,只把ios问题说说;

问题1:H5调用ios接口,ios需要初始化,js代码在ISO上只运行一次

解决:

  本人使用是angular框架搭建的H5页面

var ua = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) {
$rootScope.$on("$locationChangeSuccess",function(){
parent.location.reload();
})
}

意思就是每一次hH5页面加载成功就让其刷新一次;

问题2:ios初始化只执一次,这是由于ios本身内部机制问题;ios执行代码执行一次就储存在缓存中,但是js需要再次执行,否则功能实现不了;

解绝:ISO初始化只执行一次,这是ios本身机制,无法改变;

  调用其他接口,只能在第一次初始化的函数中执行,也就是说每个js文件只能有一个ios初始化,其他有关需要初始化操作的东西都要写在初始化函数中;

function connectWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener('WebViewJavascriptBridgeReady', function () {
callback(WebViewJavascriptBridge)
}, false)
}
}
connectWebViewJavascriptBridge(function(bridge) { bridge.init(function (message, responseCallback) {
var data = {'Javascript Responds': 'Wee!'}
responseCallback(data)
})
bridge.registerHandler('testJavascriptHandler', function (data, responseCallback) {
var responseData = {'Javascript Says': 'Right back atcha!'}
responseCallback(responseData)
})
bridge.callHandler('接口名称', {
'': '接口名称',
'body': {"接口名称": '111'}
}, function (response) {
//接口请求来的数据操作
})
  $("body").click(function(){
bridge.callHandler('接口名称', {
'': '接口名称',
'body': {"接口名称": '111'}
}, function (response) {
//接口请求来的数据操作
})
})
})
}

  包括点击操作请求接口都要放在初始化函数中;

以上内容为自己总结,有错敬请指出,谢绝复制转载

最新文章

  1. CMD:在当前文件夹下打开cmd命令
  2. WPF学习笔记(一):数据绑定之元素到元素绑定
  3. VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
  4. FPGA基本原理之一
  5. Making Your ActionBar Not Boring
  6. solr的建议搭建
  7. rails provide与content_for的区别
  8. iOS之 动态热修补技术JSPatch
  9. asp.net中分页与存储过程的一些总结
  10. PCB布线的地线干扰与抑制方法
  11. 上传图片代码(chuantouxiang.php+touxiangchuli.php)
  12. [extjs(2)] extjs第一个组件treepanel
  13. ●BZOJ 2006 NOI 2010 超级钢琴
  14. [转帖]EXPDP dumpfile和parallel的关系
  15. Centos给文件设置了777权限仍不能访问解决方案
  16. Loadrunner 脚本录制-通过代理录制脚本
  17. qtquickcontrols2控件集(使用参考重构)
  18. unity3d 加载优化建议 总结 from 侑虎科技
  19. Mac网络命令 老命令重新学
  20. 如何解决安卓(系统版本低) CSS3 动画问题---高性能动画

热门文章

  1. Win10开发环境配置
  2. dict函数
  3. gradle本地、远程仓库配置
  4. Windows安装部署Tensorflow过程中的问题处理
  5. Android Studio设置自动导包
  6. 元组,列表的增删改查, for,range 循环
  7. Windows下GO开发环境配置
  8. spark historyserver 页面反应很慢 jvm堆调参
  9. 3. orcle导入导出dmp文件并更改表空间
  10. pycharm 使用print不打印结果问题解决