1、根据User-Agent判断
// Js获取User-Agent window.navigator.userAgent if(window.navigator.userAgent.match(/MicroMessenger/i) == \"micromessenger\") // Php获取User-Agent echo $_SERVER[\'HTTP_USER_AGENT\']; if(strpos($_SERVER[\'HTTP_USER_AGENT\'],\'MicroMessenger\')==true) // 微信内部打开获取到的User-Agent Mozilla/5.0 (Linux; U; Android 5.0.2; zh-cn; MI 2S Build/LRX22G) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025488 Mobile Safari/533.1 MicroMessenger/6.3.9.48_refecd3e.700 NetType/WIFI Language/zh_CN
2、Url地址判断
// 你网页正常的url是 https://forum.xxx.com/home.php?view=2015 // 使用微信打开会在url后面添加几个参数 https://forum.xxx.com/home.php?view=2015&from=timeline&isappinstalled=0
3、使用weixin-web-js判断是否是微信
! function(a, b) { \"function\" == typeof define && (define.amd || define.cmd) ? define(function() { return b(a) }) : b(a, !0) }(this, function(a, b) { function c(b, c, d) { a.WeixinJSBridge ? WeixinJSBridge.invoke(b, e(c), function(a) { g(b, a, d) }) : j(b, d) } function d(b, c, d) { a.WeixinJSBridge ? WeixinJSBridge.on(b, function(a) { d && d.trigger && d.trigger(a), g(b, a, c) }) : d ? j(b, d) : j(b, c) } function e(a) { return a = a || {}, a.appId = E.appId, a.verifyAppId = E.appId, a.verifySignType = \"sha1\", a.verifyTimestamp = E.timestamp + \"\", a.verifyNonceStr = E.nonceStr, a.verifySignature = E.signature, a } function f(a) { return { timeStamp: a.timestamp + \"\", nonceStr: a.nonceStr, \"package\": a.package, paySign: a.paySign, signType: a.signType || \"SHA1\" } } function g(a, b, c) { var d, e, f; switch (delete b.err_code, delete b.err_desc, delete b.err_detail, d = b.errMsg, d || (d = b.err_msg, delete b.err_msg, d = h(a, d), b.errMsg = d), c = c || {}, c._complete && (c._complete(b), delete c._complete), d = b.errMsg || \"\", E.debug && !c.isInnerInvoke && alert(JSON.stringify(b)), e = d.indexOf(\":\"), f = d.substring(e + 1)) { case \"ok\": c.success && c.success(b); break; case \"cancel\": c.cancel && c.cancel(b); break; default: c.fail && c.fail(b) } c.complete && c.complete(b) } function h(a, b) { var e, f, c = a, d = p[c]; return d && (c = d), e = \"ok\", b && (f = b.indexOf(\":\"), e = b.substring(f + 1), \"confirm\" == e && (e = \"ok\"), \"failed\" == e && (e = \"fail\"), -1 != e.indexOf(\"failed_\") && (e = e.substring(7)), -1 != e.indexOf(\"fail_\") && (e = e.substring(5)), e = e.replace(/_/g, \" \"), e = e.toLowerCase(), (\"access denied\" == e || \"no permission to execute\" == e) && (e = \"permission denied\"), \"config\" == c && \"function not exist\" == e && (e = \"ok\"), \"\" == e && (e = \"fail\")), b = c + \":\" + e } function i(a) { var b, c, d, e; if (a) { for (b = 0, c = a.length; c > b; ++b) d = a[b], e = o[d], e && (a[b] = e); return a } } function j(a, b) { if (!(!E.debug || b && b.isInnerInvoke)) { var c = p[a]; c && (a = c), b && b._complete && delete b._complete, console.log(\'\"\' + a + \'\",\', b || \"\") } } function k() { 0 != D.preVerifyState && (u || v || E.debug || \"6.0.2\" > z || D.systemType < 0 || A || (A = !0, D.appId = E.appId, D.initTime = C.initEndTime - C.initStartTime, D.preVerifyTime = C.preVerifyEndTime - C.preVerifyStartTime, H.getNetworkType({ isInnerInvoke: !0, success: function(a) { var b, c; D.networkType = a.networkType, b = \"http://open.weixin.qq.com/sdk/report?v=\" + D.version + \"&o=\" + D.preVerifyState + \"&s=\" + D.systemType + \"&c=\" + D.clientVersion + \"&a=\" + D.appId + \"&n=\" + D.networkType + \"&i=\" + D.initTime + \"&p=\" + D.preVerifyTime + \"&u=\" + D.url, c = new Image, c.src = b } }))) } function l() { return (new Date).getTime() } function m(b) { w && (a.WeixinJSBridge ? b() : q.addEventListener && q.addEventListener(\"WeixinJSBridgeReady\", b, !1)) } function n() { H.invoke || (H.invoke = function(b, c, d) { a.WeixinJSBridge && WeixinJSBridge.invoke(b, e(c), d) }, H.on = function(b, c) { a.WeixinJSBridge && WeixinJSBridge.on(b, c) }) } var o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H; if (!a.jWeixin) return o = { config: \"preVerifyJSAPI\", onMenuShareTimeline: \"menu:share:timeline\", onMenuShareAppMessage: \"menu:share:appmessage\", onMenuShareQQ: \"menu:share:qq\", onMenuShareWeibo: \"menu:share:weiboApp\", onMenuShareQZone: \"menu:share:QZone\", previewImage: \"imagePreview\", getLocation: \"geoLocation\", openProductSpecificView: \"openProductViewWithPid\", addCard: \"batchAddCard\", openCard: \"batchViewCard\", chooseWXPay: \"getBrandWCPayRequest\" }, p = function() { var b, a = {}; for (b in o) a[o[b]] = b; return a }(), q = a.document, r = q.title, s = navigator.userAgent.toLowerCase(), t = navigator.platform.toLowerCase(), u = !(!t.match(\"mac\") && !t.match(\"win\")), v = -1 != s.indexOf(\"wxdebugger\"), w = -1 != s.indexOf(\"micromessenger\"), x = -1 != s.indexOf(\"android\"), y = -1 != s.indexOf(\"iphone\") || -1 != s.indexOf(\"ipad\"), z = function() { var a = s.match(/micromessenger\\/(\\d+\\.\\d+\\.\\d+)/) || s.match(/micromessenger\\/(\\d+\\.\\d+)/); return a ? a[1] : \"\" }(), A = !1, B = !1, C = { initStartTime: l(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 }, D = { version: 1, appId: \"\", initTime: 0, preVerifyTime: 0, networkType: \"\", preVerifyState: 1, systemType: y ? 1 : x ? 2 : -1, clientVersion: z, url: encodeURIComponent(location.href) }, E = {}, F = { _completes: [] }, G = { state: 0, data: {} }, m(function() { C.initEndTime = l() }), H = { config: function(a) { E = a, j(\"config\", a); var b = E.check === !1 ? !1 : !0; m(function() { var a, d, e; if (b) c(o.config, { verifyJsApiList: i(E.jsApiList) }, function() { F._complete = function(a) { C.preVerifyEndTime = l(), G.state = 1, G.data = a }, F.success = function() { D.preVerifyState = 0 }, F.fail = function(a) { F._fail ? F._fail(a) : G.state = -1 }; var a = F._completes; return a.push(function() { k() }), F.complete = function() { for (var c = 0, d = a.length; d > c; ++c) a[c](); F._completes = [] }, F }()), C.preVerifyStartTime = l(); else { for (G.state = 1, a = F._completes, d = 0, e = a.length; e > d; ++d) a[d](); F._completes = [] } }), E.beta && n() }, ready: function(a) { 0 != G.state ? a() : (F._completes.push(a), !w && E.debug && a()) }, error: function(a) { \"6.0.2\" > z || B || (B = !0, -1 == G.state ? a(G.data) : F._fail = a) }, checkJsApi: function(a) { var b = function(a) { var c, d, b = a.checkResult; for (c in b) d = p[c], d && (b[d] = b[c], delete b[c]); return a }; c(\"checkJsApi\", { jsApiList: i(a.jsApiList) }, function() { return a._complete = function(a) { if (x) { var c = a.checkResult; c && (a.checkResult = JSON.parse(c)) } a = b(a) }, a }()) }, onMenuShareTimeline: function(a) { d(o.onMenuShareTimeline, { complete: function() { c(\"shareTimeline\", { title: a.title || r, desc: a.title || r, img_url: a.imgUrl || \"\", link: a.link || location.href, type: a.type || \"link\", data_url: a.dataUrl || \"\" }, a) } }, a) }, onMenuShareAppMessage: function(a) { d(o.onMenuShareAppMessage, { complete: function() { c(\"sendAppMessage\", { title: a.title || r, desc: a.desc || \"\", link: a.link || location.href, img_url: a.imgUrl || \"\", type: a.type || \"link\", data_url: a.dataUrl || \"\" }, a) } }, a) }, onMenuShareQQ: function(a) { d(o.onMenuShareQQ, { complete: function() { c(\"shareQQ\", { title: a.title || r, desc: a.desc || \"\", img_url: a.imgUrl || \"\", link: a.link || location.href }, a) } }, a) }, onMenuShareWeibo: function(a) { d(o.onMenuShareWeibo, { complete: function() { c(\"shareWeiboApp\", { title: a.title || r, desc: a.desc || \"\", img_url: a.imgUrl || \"\", link: a.link || location.href }, a) } }, a) }, onMenuShareQZone: function(a) { d(o.onMenuShareQZone, { complete: function() { c(\"shareQZone\", { title: a.title || r, desc: a.desc || \"\", img_url: a.imgUrl || \"\", link: a.link || location.href }, a) } }, a) }, startRecord: function(a) { c(\"startRecord\", {}, a) }, stopRecord: function(a) { c(\"stopRecord\", {}, a) }, onVoiceRecordEnd: function(a) { d(\"onVoiceRecordEnd\", a) }, playVoice: function(a) { c(\"playVoice\", { localId: a.localId }, a) }, pauseVoice: function(a) { c(\"pauseVoice\", { localId: a.localId }, a) }, stopVoice: function(a) { c(\"stopVoice\", { localId: a.localId }, a) }, onVoicePlayEnd: function(a) { d(\"onVoicePlayEnd\", a) }, uploadVoice: function(a) { c(\"uploadVoice\", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, downloadVoice: function(a) { c(\"downloadVoice\", { serverId: a.serverId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, translateVoice: function(a) { c(\"translateVoice\", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, chooseImage: function(a) { c(\"chooseImage\", { scene: \"1|2\", count: a.count || 9, sizeType: a.sizeType || [\"original\", \"compressed\"], sourceType: a.sourceType || [\"album\", \"camera\"] }, function() { return a._complete = function(a) { if (x) { var b = a.localIds; b && (a.localIds = JSON.parse(b)) } }, a }()) }, previewImage: function(a) { c(o.previewImage, { current: a.current, urls: a.urls }, a) }, uploadImage: function(a) { c(\"uploadImage\", { localId: a.localId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, downloadImage: function(a) { c(\"downloadImage\", { serverId: a.serverId, isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1 }, a) }, getNetworkType: function(a) { var b = function(a) { var c, d, e, b = a.errMsg; if (a.errMsg = \"getNetworkType:ok\", c = a.subtype, delete a.subtype, c) a.networkType = c; else switch (d = b.indexOf(\":\"), e = b.substring(d + 1)) { case \"wifi\": case \"edge\": case \"wwan\": a.networkType = e; break; default: a.errMsg = \"getNetworkType:fail\" } return a }; c(\"getNetworkType\", {}, function() { return a._complete = function(a) { a = b(a) }, a }()) }, openLocation: function(a) { c(\"openLocation\", { latitude: a.latitude, longitude: a.longitude, name: a.name || \"\", address: a.address || \"\", scale: a.scale || 28, infoUrl: a.infoUrl || \"\" }, a) }, getLocation: function(a) { a = a || {}, c(o.getLocation, { type: a.type || \"wgs84\" }, function() { return a._complete = function(a) { delete a.type }, a }()) }, hideOptionMenu: function(a) { c(\"hideOptionMenu\", {}, a) }, showOptionMenu: function(a) { c(\"showOptionMenu\", {}, a) }, closeWindow: function(a) { a = a || {}, c(\"closeWindow\", {}, a) }, hideMenuItems: function(a) { c(\"hideMenuItems\", { menuList: a.menuList }, a) }, showMenuItems: function(a) { c(\"showMenuItems\", { menuList: a.menuList }, a) }, hideAllNonBaseMenuItem: function(a) { c(\"hideAllNonBaseMenuItem\", {}, a) }, showAllNonBaseMenuItem: function(a) { c(\"showAllNonBaseMenuItem\", {}, a) }, scanQRCode: function(a) { a = a || {}, c(\"scanQRCode\", { needResult: a.needResult || 0, scanType: a.scanType || [\"qrCode\", \"barCode\"] }, function() { return a._complete = function(a) { var b, c; y && (b = a.resultStr, b && (c = JSON.parse(b), a.resultStr = c && c.scan_code && c.scan_code.scan_result)) }, a }()) }, openProductSpecificView: function(a) { c(o.openProductSpecificView, { pid: a.productId, view_type: a.viewType || 0, ext_info: a.extInfo }, a) }, addCard: function(a) { var e, f, g, h, b = a.cardList, d = []; for (e = 0, f = b.length; f > e; ++e) g = b[e], h = { card_id: g.cardId, card_ext: g.cardExt }, d.push(h); c(o.addCard, { card_list: d }, function() { return a._complete = function(a) { var c, d, e, b = a.card_list; if (b) { for (b = JSON.parse(b), c = 0, d = b.length; d > c; ++c) e = b[c], e.cardId = e.card_id, e.cardExt = e.card_ext, e.isSuccess = e.is_succ ? !0 : !1, delete e.card_id, delete e.card_ext, delete e.is_succ; a.cardList = b, delete a.card_list } }, a }()) }, chooseCard: function(a) { c(\"chooseCard\", { app_id: E.appId, location_id: a.shopId || \"\", sign_type: a.signType || \"SHA1\", card_id: a.cardId || \"\", card_type: a.cardType || \"\", card_sign: a.cardSign, time_stamp: a.timestamp + \"\", nonce_str: a.nonceStr }, function() { return a._complete = function(a) { a.cardList = a.choose_card_info, delete a.choose_card_info }, a }()) }, openCard: function(a) { var e, f, g, h, b = a.cardList, d = []; for (e = 0, f = b.length; f > e; ++e) g = b[e], h = { card_id: g.cardId, code: g.code }, d.push(h); c(o.openCard, { card_list: d }, a) }, chooseWXPay: function(a) { c(o.chooseWXPay, f(a), a) } }, b && (a.wx = a.jWeixin = H), H });
本文地址:https://www.stayed.cn/item/17290
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我