一: 使用微信的js-sdk能夠實現分享功能,按照js-sdk文檔寫三個函數就好了:html
Wx.config({前端
});android
Wx.ready(function(){ios
});web
wx.error(function(){ajax
});json
代碼以下:api
this.$el.html(this.getXTemplate(this.contentTpl, self.pageData));服務器
const tost = document.getElementById('tost');微信
const center = document.getElementById('center');
//點擊分享彈出框
center.onclick = function(){
tost.style = "display:block"
};
//點擊tost取消彈出框
tost.onclick = function(){
tost.style = "display:none"
};
//微信分享JS SDK開始
const shareConfig={link:window.location.href};
const shareurl = shareConfig.link;
const sharelink = shareurl.split("?")[0];
//alert(sharelink);
$.ajax({
url:'https://wechat.alisec.org/wechat/getWechatJsapiSign',
data:{url:shareConfig.link},
dataType:'json',
success:function(data){
alert('成功'+data);
wx.config({
debug:true, //true 調試時候彈窗
appId:data.data.appId, //微信appid
timestamp:data.data.timestamp, //時間戳
nonceStr:data.data.nonceStr, //隨機字符串
signature:data.data.signature, //簽名
jsApiList:[
'onMenuShareTimeline', //分享到朋友圈接口
'onMenuShareAppMessage',//分享到朋友接口
'onMenuShareQQ', //分享到QQ接口
'onMenuShareWeibo', //分享到微博接口
'onMenuShareQZone', //分享到QQ空間
]
});
wx.ready(function(){
//微信分享公共方法
const shareData = {
"imgUrl":'https://img.alicdn.com/tfs/TB1GoYjfnnI8KJjy0FfXXcdoVXa-117-116.jpg', //分享顯示的縮略圖地址
"link":`${sharelink}`, //分享地址
"desc":'這是一個空間', //分享描述
"title":'hello world', //分享標題
success: function () {
// 用戶確認分享後執行的回調函數
alert(111);
},
cancel: function () {
// 用戶取消分享後執行的回調函數
alert(222);
}
};
//分享給朋友
// wx.onMenuShareAppMessage({
// title:"hello world",
// desc:"這是一個空間",
// link:'http://qdm.pre.alibaba.com/core/preview/hd/hjptest.html',
// imgUrl:'https://img.alicdn.com/tfs/TB1GoYjfnnI8KJjy0FfXXcdoVXa-117-116.jpg',
// type:"",
// dataUrl:"",
// success: function () {
// // 用戶確認分享後執行的回調函數
// // alert(11111);
// },
// cancel: function () {
// // 用戶取消分享後執行的回調函數
// // alert(2222);
// }
// })
wx.onMenuShareTimeline (shareData);//分享到朋友圈
wx.onMenuShareAppMessage (shareData);//分享到朋友
wx.onMenuShareQQ (shareData);//分享到qq
wx.onMenuShareWeibo (shareData);//分享到微博
wx.onMenuShareQZone(shareData);//分享到qq空間
});
wx.error(function(res){
// config信息驗證失敗會執行error函數,如簽名過時致使驗證失敗,
// 具體錯誤信息能夠打開config的debug模式查看,也能夠在返回的res參數中查看,
//對於SPA能夠在這裏更新簽名。
alert(JSON.stringify(res));
alert("好像出錯了!!");
});
},error:function(data){
console.log(data);
alert(JSON.stringify(data));
}
});
//微信分享結束
//搖一搖開始
var currentValue = {
x : 0,
y : 0,
z : 0
};
//獲取手機晃動以後加速器的值,建立一個對象獲取
var lastValue = {
x : 0,
y : 0,
z : 0
};
//設置晃動的最小的距離,只有達到該距離時,才執行搖一搖事件
var minValue = 20;
//手機搖一搖事件
window.ondevicemotion = function(e){
var event1 = event || e;
//獲取加速器對象,爲了獲取陀螺儀上的座標信息
var acceleration = event1.accelerationIncludingGravity;
//記錄當前加速器的值
currentValue.x = acceleration.x;
currentValue.y = acceleration.y;
currentValue.z = acceleration.z;
//判斷微信搖一搖事件(手機是否晃動)
if (Math.abs(currentValue.x - lastValue.x) >= minValue || Math.abs(currentValue.y - lastValue.y) > minValue || Math.abs(currentValue.z - lastValue.z) > minValue) {
alert('搖一搖');
};
//記錄最後的值(保存上一次晃動事件中的加速器的值)
lastValue.x = currentValue.x;
lastValue.y = currentValue.y;
lastValue.z = currentValue.z;
}
//搖一搖結束
二:之前作的分享:
傳參數再調用android和ios的分享方法,
<#assign client_json = 「{shareType:'3',contentType:'${shareContentType_weibo}',title:'${shareTitle}',description:'${shareDesc}',bigLogo:'${shareImgUrl}',URL:'${shareUrl}',scene:'${scene}',extend:''}">
adaptation:function(){
//alert(this.isNewApp()+""+this.ua);
if(this.isNewApp()!=true){
var self=this;
switch (this.system){
case "android":
this.loadScript(pub.oldAnd,function(){});
break;
case "ios":
this.loadScript(pub.oldIOS,function(){});
break;
}
}
},
三:FaceBook的分享:
使用網頁分享meta標籤寫入分享的內容;facebook分享是是抓取頁面的代碼(注意是服務器返回的html代碼,由js操做後的html它們是抓不到的)。分享調試器輸入一個連接地址抓取是當前的頁面標籤不通過js渲染 ,若是想動態改變抓取的內容就須要服務端生成html,
meta標籤:
<meta property="og:site_name" content="Facebook for Developers" />
<meta property="og:title" content="how do you do" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://huodong.m.taobao.com/act/jptest2.html" />
<meta property="og:image" content="https://img.alicdn.com/tfs/TB1KBEXih6I8KJjy0FgXXXXzVXa-300-300.jpg">
<meta property="og:image" content="http://apcdn.qd.alibaba.com/head2.png">
<meta property="og:locale" content="en_US" />
<meta property="og:description" content="Download Alibaba Master to boost your phone and win Xiaomi 4A" />
服務端生成html前端配合
<meta property="og:site_name" content="Facebook for Developers" />
<meta property="og:title" content="Hottest Way to Send New Year Wishes in 2018" />
<meta property="og:type" content="article" />
<meta property="og:locale" content="en_US" />
<meta property="og:description" content="Listen to it now. I just recorded New Year Wishes for you." />
<meta property="og:image" content="${og:image}" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="421" />
Facebook js分享
首先先引入fb的sdk:
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
//下面填入一個你的app id,若是還沒,請在fb開發者平臺註冊一個
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8&appId={your app id}";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
觸發事件進行分享示例:
var shareToFbBtn = document.getElementById('fb-btn');
shareToFbBtn.onclick = function(){
FB.ui({
method: 'share',
href: "htttp://www.eaxmple.com/share.html" //這裏換成你的網址
}, function(response){
//分享回調
})
};
總結
第一種就是微信分享比較特殊調用微信接口;這其實仍是沒作到分享。
第二種本身寫方法調用原生的各個分享方法,
第三種facebook網頁分享直接頁面抓取很方便,若是想js分享需求appid android和ios客戶端分享都須要集成facebook的sdk
參考網址:http://www.jianshu.com/p/961378513e59;