js微信分享

字节云航
• 阅读 3278

首先引入微信文件

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript" src="share.js"></script>

新建share.js

function share(datas){
    /*
     分享
     */
    //success: to share
    function encode(url) {
        return encodeURIComponent(url).replace(/'/g, "%27").replace(/"/g, "%22");
    }
    //统计分享次数
    function countShare(datas) {
        var parameter =  datas.parameter;
        var countUrl = "https://activity.xxxxxx.com/activityapi/weixin/countShare.json?activityType="+datas.activityType;
        $.ajax({
            type: 'get',
            contentType:"application/x-www-form-urlencoded;charset=UTF-8",
            url: countUrl,
            dataType:'jsonp',
            jsonp:'jsoncallback',
            success: function(data){
                if(data.success){

                }else{

                }
            },
            error: function(xhr, type){

            }
        })
        return
    }
    surl = window.location.href;
    var url = "https://www.xxxxxx.com/weixin/wx_share.json?url=" + encode(window.location.href.split('#')[0]);
    var callback = function (json) {
        var data = json.message;
        data = eval("(" + data + ")");
        wx.config({
            debug: false,// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: data.appId,// 必填,公众号的唯一标识
            timestamp: data.timestamp,// 必填,生成签名的时间戳
            nonceStr: data.nonceStr,// 必填,生成签名的随机串
            signature: data.signature,// 必填,签名
            jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo']// 必填,需要使用的JS接口列表
        });

        wx.ready(function () {
            var shareData = {
                title: datas.title,
                desc: datas.desc,
                link: datas.shareUrl==undefined?surl:datas.shareUrl, // 分享链接
                imgUrl: datas.imgUrl,
                success: function () {
                    // 用户确认分享后执行的回调函数

                    //如果存在统计类型 则统计分享次数
                    if(datas.activityType){
                        countShare(datas);
                    }

                }
            };
            var shareFrieds = {
                title: datas.title,
                link: datas.shareUrl==undefined?surl:datas.shareUrl, // 分享链接
                imgUrl: datas.imgUrl,
                success: function () {
                    // 用户确认分享后执行的回调函数

                    //如果存在统计类型 则统计分享次数
                    if(datas.activityType){
                        countShare(datas);
                    }

                }
            };
            wx.onMenuShareAppMessage(shareData);//分享给好友
            wx.onMenuShareQQ(shareData);
            wx.onMenuShareWeibo(shareData);
            wx.onMenuShareTimeline(shareFrieds);//朋友圈

            console.log('weixin support set success.');
        });
        wx.error(function (res) {
            //alert(res.errMsg);
        });
    };
    $.ajax({
        url: url,
        dataType: "jsonp",
        jsonp: "jsoncallback",
        success: function (response) {
            callback && callback(response);
        },
        error: function (xhr, type) {
            console.log('xhr:' + xhr + "type:" + type);

        }
    })
}
    

调用

//微信分享
var datas = {
title: "分享标题",
desc: "分享描述",
imgUrl: "分享图片",
activityType: 'xxxx',// 用来查询分享次数
shareUrl: '分享链接'
};
share(datas);

点赞
收藏
评论区
推荐文章
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Easter79 Easter79
3年前
Springmvc异步上传文件
<scriptsrc"js/jquery.js"type"text/javascript"</script<scriptsrc"js/jquery.ext.js"type"text/javascript"</script<scriptsrc"js/jquery.form.js"type"text/javascript"
Stella981 Stella981
3年前
JQuery
一、jq简介jq其实就是js的一个文件。二、jq书写步骤1、先引入jq文件(min的文件)<scripttype"text/javascript"src"file:///C|/jquery/jquery3.3.1.min.js"</script2、换新的一行写js代码<scripttype"text/javascri
Wesley13 Wesley13
3年前
JS导出页面为PDF文件,该如何操作?来看一眼就明白啦!
废话不多说,直接上代码。1.资源文件或依赖<scripttype"text/javascript"src"https://my.oschina.net//u/4265132/blog/4054317/js/canvg2.js"</script<scripttype"text/javascript"src"https://m
Stella981 Stella981
3年前
JQValidate使用说明
JQueryValidate使用总结:一、导入js库<scriptsrc"../js/jquery.js"type"text/javascript"</script<scriptsrc"../js/jquery.validate.js"type"text/javascript"</script二、默认校验规则
Stella981 Stella981
3年前
Html5添加三联切换仿3D效果旋转木马jQuery插件教程
一、使用方法<script type"text/javascript" src"js/jquery.min.js"</script<script type"text/javascript" src"js/gallery.js"</script   二、Html结构<div id"wrapper"<div id"mai
Stella981 Stella981
3年前
Node.js 和 Apache 共用 80 端口
在CentOS上使用Apache的Proxymode使Node.js和Apache共用80端口最近用Node.js开发一个微信公共平台接口,由于微信公众平台接口配置目前仅支持默认的80端口,而我的C
Wesley13 Wesley13
3年前
JS的常用属性
JS定义:基于事件和对象驱动,并具有安全性能的脚本语言。引入:<script type”text/javascript”具体js代码</script<script type”text/javascript”src”js文件”</script大小写敏感:例如:A与a是两个不同的东东注释:// 单
Easter79 Easter79
3年前
TP5+layui表格使用(更新中)
<tableclass"layuihide"id"category"</table<scripttype"text/javascript"src"__PLUGINS__/axios/axios.min.js"</script<scripttype"text/javascr
字节云航
字节云航
Lv1
不见穿针妇,空怀故国楼。
文章
4
粉丝
0
获赞
0