解決方案:
之前用的是1.6.0版本,改成jweixin-1.2.0.js,wx.onMenuShareTimeline,wx.onMenuShareAppMessage就成功了。
不知道是不是微信的bug?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>微信js分享接口</title> </head> <body> {$name}<br /> {$nonceStr}<br /> {$signature}<br /> <div id="div" style="border:1px solid red;width:100px;height:100px;"></div> <script src="https://cdn.staticfile.org/jquery/1.10.0/jquery.js" ></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script> // alert(location.href.split('#')[0]); wx.config({ debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。 appId: 'wx9d6a08c4c094a2ab', // 必填,公眾號的唯一標識 timestamp: '{$time}', // 必填,生成簽名的時間戳 nonceStr: '{$nonceStr}', // 必填,生成簽名的隨機串 signature: '{$signature}',// 必填,簽名 jsApiList: [ 'chooseImage', // 拍照 'scanQRCode', // 微信掃一掃 'updateAppMessageShareData', 'onMenuShareAppMessage', ] // 必填,需要使用的JS接口列表 }); wx.ready(function(){ wx.onMenuShareAppMessage({ title: 'title', // 分享標題 desc: 'desc', // 分享描述 link: 'https://h5.kehu.fun', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致 imgUrl: 'https://h5.kehu.fun/static/img/2.jpg', // 分享圖標 type: '', // 分享類型,music、video或link,不填默認為link dataUrl: '', // 如果type是music或video,則要提供數據鏈接,默認為空 success: function () { // 用戶點擊了分享后執行的回調函數 $('#div').html('已經分享了哦~'); setTimeout(function(){ //回調要執行的代碼 $('#div').html('已經分享了哦~'); }, 500); } }); }); // 微信拍照 function show(){ $('#div').html('show'); wx.chooseImage({ count: 1, // 默認9 sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有 sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機,默認二者都有 success: function (res) { var localIds = res.localIds; // 返回選定照片的本地ID列表,localId可以作為img標簽的src屬性顯示圖片 } }); } // 微信掃一掃 function scan(){ $('#div').html('scan'); wx.scanQRCode({ needResult: 0, // 默認為0,掃描結果由微信處理,1則直接返回掃描結果, scanType: ["qrCode","barCode"], // 可以指定掃二維碼還是一維碼,默認二者都有 success: function (res) { var result = res.resultStr; // 當needResult 為 1 時,掃碼返回的結果 } }); } wx.error(function(res){ // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。 }); </script> <button onclick="show()">拍照</button> <button onclick="scan()">掃一掃</button> </body> </html>