2019独角兽企业重金招聘Python工程师标准>>> hot3.png

h5和app之间的webview交互

  • 这是常用的交互方法之一,iOS可以使用WKWebView,安卓可以使用JsBridge,完成常见的交互效果。
function webViewHandler(iosCallback, adrCallback) {if (getMobileOperatingSystem() === 'iOS') {setupWebViewJavascriptBridge(iosCallback);} else if (getMobileOperatingSystem() === 'Android') {connectWebViewJavascriptBridge(adrCallback);}/*获取移动终端的操作系统,mobile*/function getMobileOperatingSystem() {var userAgent = navigator.userAgent || navigator.vendor || window.opera;if (/windows phone/i.test(userAgent)) {return "Windows Phone";}if (/android/i.test(userAgent)) {return "Android";}if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {return "iOS";}return "unknown";}/*设置页面js桥,mobile*/function setupWebViewJavascriptBridge(callback) {if (window.WebViewJavascriptBridge) {return callback(WebViewJavascriptBridge);}if (window.WVJBCallbacks) {return window.WVJBCallbacks.push(callback);}window.WVJBCallbacks = [callback];var WVJBIframe = document.createElement('iframe');WVJBIframe.style.display = 'none';WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';document.documentElement.appendChild(WVJBIframe);setTimeout(function () {document.documentElement.removeChild(WVJBIframe)}, 0)}/*连接页面js桥,mobile*/function connectWebViewJavascriptBridge(callback) {if (window.WebViewJavascriptBridge) {callback(WebViewJavascriptBridge)} else {document.addEventListener('WebViewJavascriptBridgeReady', function () {callback(WebViewJavascriptBridge)},false);}}
};
  • 调用方式如下:
webViewHandler(function (bridge) {//JsCallAppFuncName是js调用客户端iOS的方法名,params则是h5传给客户端app的参数,appCallbackHander是调用成功后js收到的回调。bridge.callHandler('JsCallAppFuncName', {"params": true},callbackAppHander);// AppCallJsFuncName是js注册的方法,供客户端iOS调用,callbackJsFunc是调用后js执行的回调bridge.registerHandler('AppCallJsFuncName', callbackJsFunc);
}, function (bridge) {// 初始化bridge.init(function (message, responseCallback) {responseCallback({'Javascript Responds': 'Wee!'});});// 方法参数和ios是一样的,只是Android必须要有初始化过程window.WebViewJavascriptBridge.callHandler('JsCallAppFuncName', {'params': true}, function (responseData) {console.log(responseData)});bridge.registerHandler('AppCallJsFuncName', callbackJsFunc);
})

获取设备的基本信息和环境

function getMobileInfo() {var info = {screen: {},device: {deviceType: 0,deviceVal: ''},env: {type: 0,value: ''}};// 屏幕大小info.screen.width = window.screen.height;info.screen.height = window.screen.width;// 设备终端var sUserAgent = navigator.userAgent.toLowerCase(),bIsiOs = (/iPad|iPhone|iPod/.test(sUserAgent) && !window.MSStream),bIsAndroid = sUserAgent.match(/android/i) == "android",bIsMidp = sUserAgent.match(/midp/i) == "midp",bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4",bIsUc = sUserAgent.match(/ucweb/i) == "ucweb",bIsCE = sUserAgent.match(/windows ce/i) == "windows ce",bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile",isWeixin = sUserAgent.match(/MicroMessenger/i) == "micromessenger",isWeiBo = sUserAgent.match(/WeiBo/i) == "weibo",isQQ = sUserAgent.match(/QQ/i) == "qq";if (bIsiOs) {info.device.deviceType = 1;info.device.deviceVal = 'iOS';} else if (bIsAndroid) {info.device.deviceType = 2;info.device.deviceVal = 'Android';}else if (bIsWM) {info.device.deviceType = 3;info.device.deviceVal = 'Windows mobile';} else {info.device.deviceType = 0;info.device.deviceVal = 'pc';}// 第三方环境if (isWeixin) {info.env.type = 1;info.env.value = 'weixin';} else if (isWeiBo) {info.env.type = 2;info.env.value = 'weibo';} else if (isQQ) {info.env.type = 3;info.env.value = 'qq';} else {info.env.type = 0;info.env.value = '其他';}return info;}
  • 返回的是设备屏幕大小,终端类型,以及所处环境(微信,微博,qq)

转载于:https://my.oschina.net/chinahufei/blog/1578106

H5开发中常用的js方法相关推荐

  1. JS lodash库在开发中常用到的方法

    目录 一.摘要 二.常用方法 一.摘要 lodash是JS一个开箱即用的库函数,里面对于在日常开发中常用到的方法都是已经封装好的,使用起来非常方便,本篇记录了在日常开发过程总经常用的方法,就大概记录一 ...

  2. jsp/html开发中常用的JS代码和页面特效代码

    1.jsp/html开发中常用的JS代码 1.后退 前进 <input type="button" value="后退" onClick="hi ...

  3. div 不受父级标签影响_前端H5开发中常用的标签

    本文主要内容 排版标签: <h1> <p> <hr /> <br /> <div> <span> <center> ...

  4. java开发中常用到小方法

    ArrayList转数组 /** 获取优惠券全部策略ID String[]*/private String[] getStrategyIDArrayCache() throws Exception { ...

  5. 项目开发中常用JS表单取值方法

    项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的)         1.form1.Te ...

  6. iOS开发中常用的方法

    iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...

  7. H5开发中的问题总结

    最近公司做了一个出行日记的项目,里面的页面十多页,天天加班,做到吐血.总体来说,写页面的时候虽然是十多个页面,其实难度还是在每个页面的特效上.公司是易到用车,出行日记的页面在APP里有生成入口,有兴趣 ...

  8. 前端开发中常用设计模式-总结篇

    本文是向大家介绍前端开发中常用的设计模式,它使我们编写的代码更容易被复用,也更容易被人理解,并且保证代码的稳定可靠性. 1.什么是设计模式 通俗来讲,就是日常使用设计的一种惯性思维. 因为对应的这种思 ...

  9. CSS中常用的clearfix方法

    常用的清除浮动(clearfix)方法: 清除兄弟元素带来的浮动影响 方法一:在浮动元素后新增一个空div标签,设置 clear:both; 方法二:在有影响的兄弟元素中设置 clear:both; ...

最新文章

  1. C语言的特点与执行程序基本步骤
  2. python的迭代器for_python特性(二):迭代器与for语句
  3. 【C++】explicit 关键字
  4. [云炬创业基础笔记]第六章商业模式测试1
  5. [模版] 网络流最大流、费用流
  6. 《书店》:一本平凡的小书
  7. 第二届数据科学家大会 专家豪华阵容公布!
  8. 源码追踪,解决Could not locate executable null\bin\winutils.exe in the Hadoop binaries.问题
  9. java验证工具类(待验证)
  10. 电脑如何测网速_职场人必备?告别加班的软件,100%提升工作效率|电脑|程序员|mac...
  11. 开启Windows文件共享必须开启的两个服务
  12. c语言 程序停止,Go语言宕机(panic)——程序终止运行
  13. ISA2006的部署和无人职守
  14. PMP扫盲篇2 | PMP报名、缴费、考试那些事儿~~
  15. 苹果越狱后怎么还原_iOS 13.3 越狱提升稳定性,自签又可以使用了
  16. DELPHI 字符转16进制、16进制转字符
  17. 使用opencv应用程序正常初始化失败0xc000000d解决办法
  18. python制作qq机器人_使用python打造一个自己的QQ机器人 【基础篇】
  19. 富爸爸,穷爸爸系列书籍目录
  20. 远程连接android手机(调试)

热门文章

  1. 算法:排序算法的比较
  2. 美学评价_卡美学的真正美
  3. 一个帮助我100%拿offer的面试学习法
  4. Azure PowerShell (1) PowerShell整理
  5. 解决 同时安装 python3,python2环境时,用pip安装 python3 包
  6. CentOS 5.5下搭建部署独立SVN服务器全程详解
  7. ant 执行多个构建文件
  8. mysql 5.6.31 winx64_详解介绍MySQL5.6.31winx64.zip安装配置的图文教程
  9. 人脸识别拷勤门禁主板_捷易讲解AI无感人脸识别考勤门禁终端设备在使用中的维护方法...
  10. 三、SpringBoot-application.properties配置文件和application.yml配置文件