gongzi-blog

由于涉及到项目隐私性,隐私关键词用+++代替

 // isWeixin 判断是否在微信中。
 function isWeixin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == "micromessenger") {
        return true;
    } else {
        return false;
    }
}

if (utils.getUrlParam(\'topicId\') && utils.isWeixin()) {
    wxShare(\'COMMUNITY_TOPIC_FX\', utils.getUrlParam(\'topicId\'));
}

//异步请求获取到分享信息
function wxShare(eventCode,eventId){   
    var curUrl = window.location.href;//分享链接  默认是当前url  
    //分享到微信的链接进行二次分享时可能会被添加一个参数 isappinstalled
    //如果有微信加的标识则去掉
    if(curUrl.indexOf("isappinstalled") != -1){
        curUrl = delParam(curUrl,"isappinstalled");
        window.location.href = curUrl;
    }                 
    var ajaxUrl = "*******/info?eventCode="+eventCode+"&eventId="+eventId;
    $.ajax({
        url:ajaxUrl,
        type:\'GET\',
        dataType: \'json\',
        success: function (res) {
            if(res.returnCode==0){
                var shareInfoWX=res.body.shareInfoList[2];//这里的数据处理要看实际后台传参列表结构。
                //拿给定的分享信息继续调用接口获取微信参数配置
                shareByWxConfig(shareInfoWX.shareTitle,shareInfoWX.shareContent,shareInfoWX.sharePicUrl,curUrl)                                                              
            }else{
                console.log(res.returnMsg);
            }
        },
        error: function (e) {
            console.log(e);
        }
    });

}

//删除给定url的特定参数paramKey
function delParam(url,paramKey) {
    var beforeUrl = url.substr(0, url.indexOf("?"));   //页面主地址(参数之前地址)
    var urlParam = url.substr(url.indexOf("?")+1);   //页面参数
    var nextUrl = "";
    var newUrl = "";

    var arr = new Array();
    if (urlParam != "") {
        var urlParamArr = urlParam.split("&"); //将参数按照&符分成数组
        for (var i = 0; i < urlParamArr.length; i++) {            
            (urlParamArr[i].indexOf(paramKey)&&arr.push(urlParamArr[i]));
        }
    }
    if (arr.length > 0) {
        nextUrl = "?" + arr.join("&");
    }
    newUrl = beforeUrl + nextUrl;
    return newUrl;
}

//获取微信参数配置
function shareByWxConfig(title,content,icon,curUrl){

    if(!curUrl){
        var curUrl = window.location.href;//分享链接  默认是当前url   
        //如果有微信加的标识则去掉
        if(curUrl.indexOf("isappinstalled") != -1){
            curUrl = curUrl.split("?")[0];
            window.location.href = curUrl;
        }   
    }
    //微信设置
    var curHttp = window.location.origin;

    var ajaxUrl = curHttp+"++++++/api/v1/weixin/weixin-jsapi-sign?system=1&currentUrl="+curUrl;

    // ajax请求后台接口,获取微信签名
    $.ajax({
        url: ajaxUrl,
        data:{
            url: curUrl
        },
        type: \'GET\',
        dataType: \'json\',
        success: function (res) {
            if(res.returnCode==0){                
                wx.config({
                    // debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: res.body.appId, // 必填,换成你公众号里的appid
                    timestamp: res.body.timestamp, // 必填,生成签名的时间戳
                    nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
                    signature: res.body.signature,// 必填,签名
                    jsApiList: [\'checkJsApi\',\'updateTimelineShareData\',\'hideOptionMenu\',\'updateAppMessageShareData\'] // 必填,需要使用的JS接口列表
                });

                wx.ready(function(){
                    //wx.hideOptionMenu();/***隐藏分享菜单****/   
                    wx.checkJsApi({  
                        jsApiList: [  
                            \'getLocation\',  
                            \'updateTimelineShareData\',  
                            \'updateAppMessageShareData\'  
                        ],  
                        success: function (res) {  
                            //alert(res.errMsg);  
                        }  
                    });  

                    wx.updateAppMessageShareData({//分享给好友接口自定义数据  标题和内容描述可以自定义修改
                        title: title, // 分享标题
                        desc: content, // 分享描述
                        link: curUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: icon, // 分享图标
                        success: function () {
                            // 用户点击了分享后执行的回调函数
                            console.log(\'用户点击了分享\');
                        }
                    });

                    wx.updateTimelineShareData({//分享到朋友圈接口自定义数据 标题和内容描述可以自定义修改
                        title: title, // 分享标题
                        desc: content, // 分享描述
                        link: curUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: icon, // 分享图标
                        success: function () {
                            // 用户点击了分享后执行的回调函数
                            console.log(\'用户点击了分享\');
                        }
                    });

                });
                wx.error(function(res){
                    console.log(\'wx jsapi fail\');
                });

            }else{
                console.log(res.returnMsg);
            }
        },
        error: function (e) {
            console.log(e);
        }
    });
}

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2021-11-03
  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-08
  • 2022-01-20
  • 2022-12-23
  • 2022-01-15
  • 2021-11-17
相关资源
相似解决方案