想必各位在寫wap端時都遇到過這樣的場景吧javascript
----自定義分享標題、圖片、描述php
接下來小編給你們講解下分享相關操做css
原始的分享效果:html
使用微信JS-SDK的分享效果:java
能夠看出縮略圖,標題,摘要樣式良好,給用戶的體驗很好。jquery
微信官方開發者文檔地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115web
如今的思路已經很明確了,就是經過調用微信的JS-SDK實現自定義分享效果。可是這個調用過程比較繁瑣,須要提早準備以下東西:安全
(1)微信服務號一個,而且已經經過了實名認證;服務器
沒有實名認證的話,一些接口沒有調用權限。微信
(2)一個ICP備案的域名;
這個域名須要設置爲微信公衆號後臺的JS接口安全域名,不然微信仍然不容許調用它的接口。
這時你們應該就犯難了,這樣的話豈不是不能在本地測試,只能部署到生產環境才能測試?不用着急,解決方案告訴你們:花生殼的內網穿透服務(收費,20元之內)
花生殼官網:http://hsk.oray.com/price/#personal
選擇我的免費版就能夠了,雖說是免費版,可是其實註冊過程當中仍是要收幾塊錢的,由於我本身買了域名和流量因此花的錢更多一些,但也在20元之內。不建議你們購買流量,送的流量能夠用好久了。
當準備好上面提到的就能夠開始敲代碼了。
(3)安裝微信開發者工具,用於本地調試。
下載地址:https://mp.weixin.qq.com/debug/cgi-bin/webdebugger/download?from=mpwiki&os=x64
官方使用教程:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140
進入微信後臺,找到下面的菜單
獲取AppID和AppSecret
設置JS接口安全域名
注意第三步,若是微信服務器不能在咱們的服務器上訪問到這個txt文件,域名是沒法設置成功的,這裏先告訴你們在哪裏設置,想要成功設置域名還須要使用花生殼的服務,讓微信服務器訪問咱們本地工程中的的txt文件才行。
hkh3321313.vicp.io是在花生殼上購買的域名,免費送的域名是在太難記了,徹底不能忍。
這裏須要注意是http仍是https,若是生產環境是https,務必前綴是https,都則會出現mix content這樣的錯誤,致使引入失敗。
<script typet="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
個人實例過程用的是
<script typet="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> |
注意必須引入jquery庫且庫在前 以下圖
特別注意1:我這個頁面由於下文用到window.onload = function(){ } ,而同一個頁面 若是有兩套window.onliad=function(){ } 只會執行最後一套,因此這裏我換成了$(function(){ })
下面我把我頁面中的源碼粘貼在下面
<?php require_once "jssdk/jssdk.php"; $jssdk = new JSSDK("wx5da159273bc20f8c", "c9a2f38963f08dd082f75261c13f0c97"); $signPackage = $jssdk->GetSignPackage(); //var_dump($signPackage); ?> <html> <head lang='zh-cn'> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" /> <meta content="yes" name="app-moblie-web-app-capable"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="format-detection" content="telephone=no"> <meta name="renderer" content="webkit"> <meta name="Author" content="http://wap.simufengyun.com"> <title>上海交大私募班</title> <meta name="keywords" content=""> <meta name="description" content=""> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/same.css"> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/left_column.css"> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/av_detail.css"> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/activitydetail.css"> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/activity.css"> <link rel="stylesheet" type="text/css" href="__PUBLIC__/msimufengyun/style/swiper-3.3.1.min.css"> <link href="__PUBLIC__/Home/css/compub.css" rel="stylesheet"> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script type="text/javascript"> window.onload = function(){ var invite = "{$uid}"; //var pre_urll = window.location.href; //var pre_url = pre_urll + '?invite='+invite; var pre_urlll = window.location.host; //獲取主域名 var pre_urllll = window.location.pathname;//獲取域名到參數之間的內容 var pre_url = "http://"+ pre_urlll+pre_urllll + '?invite='+invite; //alert(pre_url); wx.config({ debug:false, //關閉調試 appId:'<?php echo $signPackage["appId"];?>', timestamp:'<?php echo $signPackage["timestamp"];?>', nonceStr:'<?php echo $signPackage["nonceStr"];?>', signature:'<?php echo $signPackage["signature"];?>', jsApiList:[ //全部要調用的API列表 "onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "wx.onMenuShareWeibo", "onMenuShareQZone" ] }); wx.ready(function(){ //分享給朋友 wx.onMenuShareAppMessage({ title:"{$data['a_Title']}",//分享標題 desc:"{$data['a_Introduction']}", //分享描述 link:pre_url,//分享連接 // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致 imgUrl:"{$data['a_Image']}",//分享圖標 type:'link',//分享類型,music/video或link,默認link dataUrl:'',//若是是type是music或video,則要提供數據連接,默認爲空 /*success:function(){ //用戶確認分享後執行的回調函數 erroy("分享成功"); },*/ }); //分享給朋友圈 wx.onMenuShareTimeline({ title:"{$data['a_Title']}",//分享標題 link:pre_url,//分享連接 // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致 imgUrl:"{$data['a_Image']}",//分享圖標 /*success: function () { // 用戶確認分享後執行的回調函數 erroy("分享成功"); }, /*cancel: function () { // 用戶取消分享後執行的回調函數 alert("分享失敗"); }*/ }); //分享到QQ wx.onMenuShareQQ({ title:"{$data['a_Title']}",//分享標題 desc:"{$data['a_Introduction']}", //分享描述 link:pre_url,//分享連接 // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致 imgUrl:"{$data['a_Image']}",//分享圖標 type:'link',//分享類型,music/video或link,默認link dataUrl:'',//若是是type是music或video,則要提供數據連接,默認爲空 /*success:function(){ //用戶確認分享後執行的回調函數 erroy("分享成功"); }, /*cancel:function(){ //用戶取消分享後執行的回調函數 alert("分享失敗"); }*/ }); //分享到qq空間 wx.onMenuShareQZone({ title:"{$data['a_Title']}",//分享標題 desc:"{$data['a_Introduction']}", //分享描述 link:pre_url,//分享連接 // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致 imgUrl:"{$data['a_Image']}",//分享圖標 type:'link',//分享類型,music/video或link,默認link dataUrl:'',//若是是type是music或video,則要提供數據連接,默認爲空 /*success:function(){ //用戶確認分享後執行的回調函數 erroy("分享成功"); }, /*cancel:function(){ //用戶取消分享後執行的回調函數 alert("分享失敗"); }*/ }); //分享到微博 wx.onMenuShareWeibo({ title:"{$data['a_Title']}",//分享標題 desc:"{$data['a_Introduction']}", //分享描述 link:pre_url,//分享連接 // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致 imgUrl:"{$data['a_Image']}",//分享圖標 type:'link',//分享類型,music/video或link,默認link dataUrl:'',//若是是type是music或video,則要提供數據連接,默認爲空 /*success:function(){ //用戶確認分享後執行的回調函數 erroy("分享成功"); }, /*cancel:function(){ //用戶取消分享後執行的回調函數 alert("分享失敗"); }*/ }); }) } </script> <style type="text/css"> .container p img{ width: 100%; border:none; } </style> </head> <body> <div style='position:relative;'> <div class='index_header'> <div class='left_btn'>
上面代碼示例中 紅顏色的內容 即爲後臺返出自定義圖片、標題、描素內容。
注意有兩點內容容易致使 分享達不到效果 :
一、若是用$(function(){ }) 須要把jquery庫引入在前面,保證$有定義;
二、若是用window.onload=function(){} ,切記在同一個頁面內不要有第二個出現
好了,到此就結束了