使用JavaScript脚本判断页面是否在微信中被打开
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;Android5.0.2;zh-cn;MI2SBuild/LRX22G)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MQQBrowser/5.4TBS/025488MobileSafari/533.1MicroMessenger/6.3.9.48_refecd3e.700NetType/WIFILanguage/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"==typeofdefine&&(define.amd||define.cmd)?define(function(){
returnb(a)
}):b(a,!0)
}(this,function(a,b){
functionc(b,c,d){
a.WeixinJSBridge?WeixinJSBridge.invoke(b,e(c),function(a){
g(b,a,d)
}):j(b,d)
}
functiond(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)
}
functione(a){
returna=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
}
functionf(a){
return{
timeStamp:a.timestamp+"",
nonceStr:a.nonceStr,
"package":a.package,
paySign:a.paySign,
signType:a.signType||"SHA1"
}
}
functiong(a,b,c){
vard,e,f;
switch(deleteb.err_code,deleteb.err_desc,deleteb.err_detail,d=b.errMsg,d||(d=b.err_msg,deleteb.err_msg,d=h(a,d),b.errMsg=d),c=c||{},c._complete&&(c._complete(b),deletec._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)
}
functionh(a,b){
vare,f,c=a,
d=p[c];
returnd&&(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(),("accessdenied"==e||"nopermissiontoexecute"==e)&&(e="permissiondenied"),"config"==c&&"functionnotexist"==e&&(e="ok"),""==e&&(e="fail")),b=c+":"+e
}
functioni(a){
varb,c,d,e;
if(a){
for(b=0,c=a.length;c>b;++b)d=a[b],e=o[d],e&&(a[b]=e);
returna
}
}
functionj(a,b){
if(!(!E.debug||b&&b.isInnerInvoke)){
varc=p[a];
c&&(a=c),b&&b._complete&&deleteb._complete,console.log('"'+a+'",',b||"")
}
}
functionk(){
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){
varb,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=newImage,c.src=b
}
})))
}
functionl(){
return(newDate).getTime()
}
functionm(b){
w&&(a.WeixinJSBridge?b():q.addEventListener&&q.addEventListener("WeixinJSBridgeReady",b,!1))
}
functionn(){
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)
})
}
varo,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H;
if(!a.jWeixin)returno={
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(){
varb,a={};
for(bino)a[o[b]]=b;
returna
}(),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(){
vara=s.match(/micromessenger\/(\d+\.\d+\.\d+)/)||s.match(/micromessenger\/(\d+\.\d+)/);
returna?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);
varb=E.check===!1?!1:!0;
m(function(){
vara,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
};
vara=F._completes;
returna.push(function(){
k()
}),F.complete=function(){
for(varc=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){
varb=function(a){
varc,d,b=a.checkResult;
for(cinb)d=p[c],d&&(b[d]=b[c],deleteb[c]);
returna
};
c("checkJsApi",{
jsApiList:i(a.jsApiList)
},function(){
returna._complete=function(a){
if(x){
varc=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(){
returna._complete=function(a){
if(x){
varb=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){
varb=function(a){
varc,d,e,b=a.errMsg;
if(a.errMsg="getNetworkType:ok",c=a.subtype,deletea.subtype,c)a.networkType=c;
elseswitch(d=b.indexOf(":"),e=b.substring(d+1)){
case"wifi":
case"edge":
case"wwan":
a.networkType=e;
break;
default:
a.errMsg="getNetworkType:fail"
}
returna
};
c("getNetworkType",{},function(){
returna._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(){
returna._complete=function(a){
deletea.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(){
returna._complete=function(a){
varb,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){
vare,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(){
returna._complete=function(a){
varc,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,deletee.card_id,deletee.card_ext,deletee.is_succ;
a.cardList=b,deletea.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(){
returna._complete=function(a){
a.cardList=a.choose_card_info,deletea.choose_card_info
},a
}())
},
openCard:function(a){
vare,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
});