H5 判斷手機裝置型別及不同型別調起分享
阿新 • • 發佈:2022-03-28
1.判斷手機裝置的函式
// 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; } }
//js判斷是否為鴻蒙系統 chos是鴻蒙webview的標識 function checkIsHarmonyOS() { var u = navigator.userAgent; if (u.indexOf("ohos") > -1) { return true; } else { return false; } }
2.裝置型別的判斷
if (checkIsAppleDevice()) { return "ios"; } else if (checkIsHarmonyOS()) { return "HarmonyOS"; } else { return "andriod"; }
注意點:鴻蒙系統的判斷要放在安卓的判斷之前,因為鴻蒙ua中包含了andriod.
3.具體分享的呼叫實現
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("請在大象新聞客戶端進行該操作"); } } 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("請在大象新聞客戶端進行該操作"); } 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("請在大象新聞客戶端進行該操作"); } return true; } }
鴻蒙原生方法的呼叫
if (window.JsCallbackToApp && window.JsCallbackToApp.call) { var result = JsCallbackToApp.call(params); } // JsCallbackToApp 為方法名 // params 為引數,引數格式為json字串 // result 為返回值,非必須
注意點:鴻蒙系統與安卓系統的呼叫方法的不同