H5 判断手机设备类型及不同类型调起分享
1.判断手机设备的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // js判断是否是苹果设备 function checkIsAppleDevice() { var u = navigator.userAgent, app = navigator.appVersion; var ios = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); var iPad = u.indexOf("iPad") > -1; var iPhone = u.indexOf("iPhone") > -1 || u.indexOf("Mac") > -1; if (ios || iPad || iPhone) { return true; } else { return false; } } //js判断是否为Android设备 function checkIsAndroidDevice() { var u = navigator.userAgent; if (u.indexOf("Android") > -1 || u.indexOf("Adr") > -1) { return true; } else { return false; } } < br > //js判断是否为鸿蒙系统 chos是鸿蒙webview的标识 function checkIsHarmonyOS() { var u = navigator.userAgent; if (u.indexOf("ohos") > -1) { return true; } else { return false; } } |
2.设备类型的判断
1 2 3 4 5 6 7 | if (checkIsAppleDevice()) { return "ios"; } else if (checkIsHarmonyOS()) { return "HarmonyOS"; } else { return "andriod"; } |
注意点:鸿蒙系统的判断要放在安卓的判断之前,因为鸿蒙ua中包含了andriod.
3.具体分享的调用实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function getShareUrl() { if ("ios" == xPhone) { if ( window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.requestShareUrl ) { window.webkit.messageHandlers.requestShareUrl.postMessage({ title: $(".nickname").text() + "给你发来一张贺卡", summary: $(".word").text(), shareUrl: 'XXXXXXX', //分享地址及分享需要携带的参数 image: $(".pic img").attr("src"), }); } else { alert("请在xxx进行该操作"); } } else if ("andriod" == xPhone) { if (window.Android && window.Android.requestShareUrl) { window.Android.requestShareUrl( JSON.stringify({ title: $(".nickname").text() + "给你发来一张贺卡", summary: $(".word").text(), shareUrl: 'xxxxx', //分享链接及其携带参数 image: $(".pic img").attr("src"), }) ); } else { alert("请在xx进行该操作"); } return true; } else { // 鸿蒙系统 if (window.requestShareUrl && window.requestShareUrl.call) { window.requestShareUrl.call( JSON.stringify({ title: $(".nickname").text() + "给你发来一张贺卡", summary: $(".word").text(), shareUrl: 'xxxxxx' //分享链接及其携带参数 image: $(".pic img").attr("src"), }) ); } else { alert("请在xxx进行该操作"); } return true; } } |
鸿蒙原生方法的调用
1 2 3 4 5 6 7 | if (window.JsCallbackToApp && window.JsCallbackToApp.call) { var result = JsCallbackToApp.call(params); } // JsCallbackToApp 为方法名 // params 为参数,参数格式为json字符串 // result 为返回值,非必须 |
注意点:鸿蒙系统与安卓系统的调用方法的不同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通