<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript" src="/draw/jquery.rotate.min.js"></script> <!--JS SDK 1.6--> <script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script> $(function() { var $btn = $('.g-lottery-img');// 旋轉的div var playnum = 1; //初始次數,由后台傳入 $('.playnum').html(playnum);//顯示還剩下多少次抽獎機會 var isture = 0;//是否正在抽獎 var clickfunc = function() { var data = [1, 2, 3, 4, 5, 6];//抽獎 //data為隨機出來的結果,根據概率后的結果 data = data[Math.floor(Math.random() * data.length)];//1~6的隨機數 switch(data) { case 1: rotateFunc(1, 0, '恭喜您獲得2000元理財金'); break; case 2: rotateFunc(2, 0, '恭喜您獲得2000元理財金2'); break; case 3: rotateFunc(3, 0, '恭喜您獲得2000元理財金3'); break; case 4: rotateFunc(4, -60, '謝謝參與4'); break; case 5: rotateFunc(5, 120, '謝謝參與5'); break; case 6: rotateFunc(6, 120, '謝謝參與6'); break; } } $(".playbtn").click(function() { if(isture) return; // 如果在執行就退出 isture = true; // 標志為 在執行 if(playnum <= 0) { //當抽獎次數為0的時候執行 alert("沒有次數了。分享后可多獲取一次抽獎機會。"); $('.playnum').html(0);//次數顯示為0 isture = false; } else { //還有次數就執行 playnum = playnum - 1; //執行轉盤了則次數減1 if(playnum <= 0) { playnum = 0; } $('.playnum').html(playnum); clickfunc(); } }); var rotateFunc = function(awards, angle, text) { isture = true; $btn.stopRotate(); $btn.rotate({ angle: 0,//旋轉的角度數 duration: 4000, //旋轉時間 animateTo: angle + 1440, //給定的角度,讓它根據得出來的結果加上1440度旋轉 callback: function() { isture = false; // 標志為 執行完畢 alert(text); } }); }; //JS-SDK的頁面必須先注入配置信息 wx.config({ debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。 appId: '[[${appId}]]', //后台 必填,公眾號的唯一標識 timestamp: [[${timestamp}]], // 必填,后台生成簽名的時間戳 nonceStr: '[[${nonceStr}]]', // 必填,后台生成簽名的隨機串 signature: '[[${signature}]]',// 必填,后台簽名 // jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage','onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone'] }); // jsApiList: ['updateTimelineShareData'] //自定義“分享到朋友圈”及“分享到QQ空間”按鈕的分享內容 //wx.ready(function () { //必須注釋掉 否則頁面加載就提示分享成功了 //分享到朋友圈 wx.updateTimelineShareData({//updateTimelineShareData title: '抽獎活動', // 分享標題 link: 'http://wyq4s7.xxx.cc/api/draw', // 分享鏈接, //注意:該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致 //不要寫錯了 不然會提示 系統錯誤,錯誤碼:63002,invalid signature imgUrl: 'http://wyq4s7.xxx.cc/draw/playbtn.png', // 分享圖標 success: function () { alert("分享成功");//不要用alert,不然錯誤無法wx.error無法執行 console.log("分享成功"); // playnum = 1; //應該在后台設置並獲取 // $('.playnum').html('1'); }, cancel: function () { console.log("分享取消"); } }); //}); wx.ready(function () {//文檔的即將廢棄,其實分享用的就是舊方法,這個上面的新的分享updateTimelineShareData根本沒有作用,但是不加分享無法成功 wx.onMenuShareTimeline({ title: '抽獎活動2', // 分享標題 link: 'http://wyq4s7.xxx.cc/api/draw', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致 imgUrl: 'http://wyq4s7.xxx.cc/draw/playbtn.png', // 分享圖標 success: function () { // 用戶點擊了分享后執行的回調函數 alert("分享成功2");//不要用alert,不然錯誤無法wx.error無法執行 console.log("分享成功2"); playnum = 1; //應該在后台設置並獲取 $('.playnum').html(playnum); }, cancel: function () { console.log("分享取消2"); } }); }); //必須放wx.ready后面 否則無法執行 wx.error(function(res){ //alert(res.errMsg); //config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。 }); });
以上為正常的測試代碼,分享朋友圈成功后,多增加一次抽獎機會。
總結
新版本的接口updateTimelineShareData要放到wx.ready的外面,否則頁面一加載完會自動彈出分享成功的信息
舊版本的接口onMenuShareTimeline要放到wx.ready的里面,否則無法分享成功,
反正新舊版本的2個分享朋友圈的接口都要寫上。缺少其中一個都不行。
還有就是wx.config里面
jsApiList: ['updateTimelineShareData'] 只寫一個根本無法分享,要把舊的接口都加上,改為如下
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage','onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone']
環境聲明:如上代碼是用微信開發工具測試成功的。真機iphone測試取消分享不起作用。
感謝這篇文章 https://niuchao.com/technology/690 的作者,我也是參考他的總結測試出來的。