使用JavaScript脚本判断页面是否在微信中被打开

前端之家收集整理的这篇文章主要介绍了使用JavaScript脚本判断页面是否在微信中被打开前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、根据User-Agent判断

获取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地址判断

PHP?view=2015

// 使用微信打开会在url后面添加几个参数
https://forum.xxx.com/home.PHP?view=2015&from=timeline&isappinstalled=0

3、使用weixin-web-js判断是否是微信

function d(b,d) {
a.WeixinJSBridge ? WeixinJSBridge.on(b,function(a) {
d && d.trigger && d.trigger(a),g(b,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,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",!1))
}

function n() {
H.invoke || (H.invoke = function(b,d) {
a.WeixinJSBridge && WeixinJSBridge.invoke(b,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,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,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",desc: a.desc || "",onMenuShareQQ: function(a) {
d(o.onMenuShareQQ,{
complete: function() {
c("shareQQ",link: a.link || location.href
},onMenuShareWeibo: function(a) {
d(o.onMenuShareWeibo,{
complete: function() {
c("shareWeiboApp",onMenuShareQZone: function(a) {
d(o.onMenuShareQZone,{
complete: function() {
c("shareQZone",startRecord: function(a) {
c("startRecord",{},stopRecord: function(a) {
c("stopRecord",onVoiceRecordEnd: function(a) {
d("onVoiceRecordEnd",playVoice: function(a) {
c("playVoice",{
localId: a.localId
},pauseVoice: function(a) {
c("pauseVoice",stopVoice: function(a) {
c("stopVoice",onVoicePlayEnd: function(a) {
d("onVoicePlayEnd",uploadVoice: function(a) {
c("uploadVoice",{
localId: a.localId,isShowProgressTips: 0 == a.isShowProgressTips ? 0 : 1
},downloadVoice: function(a) {
c("downloadVoice",{
serverId: a.serverId,translateVoice: function(a) {
c("translateVoice",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))
}
},previewImage: function(a) {
c(o.previewImage,{
current: a.current,urls: a.urls
},uploadImage: function(a) {
c("uploadImage",downloadImage: function(a) {
c("downloadImage",getNetworkType: function(a) {
var b = function(a) {
var c,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)
},openLocation: function(a) {
c("openLocation",{
latitude: a.latitude,longitude: a.longitude,name: a.name || "",address: a.address || "",scale: a.scale || 28,infoUrl: a.infoUrl || ""
},getLocation: function(a) {
a = a || {},c(o.getLocation,{
type: a.type || "wgs84"
},function() {
return a._complete = function(a) {
delete a.type
},hideOptionMenu: function(a) {
c("hideOptionMenu",showOptionMenu: function(a) {
c("showOptionMenu",closeWindow: function(a) {
a = a || {},c("closeWindow",hideMenuItems: function(a) {
c("hideMenuItems",{
menuList: a.menuList
},showMenuItems: function(a) {
c("showMenuItems",hideAllNonBaseMenuItem: function(a) {
c("hideAllNonBaseMenuItem",showAllNonBaseMenuItem: function(a) {
c("showAllNonBaseMenuItem",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))
},openProductSpecificView: function(a) {
c(o.openProductSpecificView,{
pid: a.productId,view_type: a.viewType || 0,ext_info: a.extInfo
},addCard: function(a) {
var e,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,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
}
},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
},openCard: function(a) {
var e,code: g.code
},d.push(h);
c(o.openCard,chooseWXPay: function(a) {
c(o.chooseWXPay,f(a),a)
}
},b && (a.wx = a.jWeixin = H),H
});

猜你在找的JavaScript相关文章