使用JavaScript脚本判断页面是否在微信中被打开
来源: 阅读:2612 次 日期:2016-07-22 16:48:13
温馨提示: 小编为您整理了“使用JavaScript脚本判断页面是否在微信中被打开”,方便广大网友查阅!

这篇文章主要介绍了使用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; 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

});

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map