shareData

当一个链接在微信或易信浏览器里打开时,不管这个链接是公众号里的内容还是扫码打开的链接,分享给好友或是朋友圈时,分享的内容默认从网页中取,包括页面中的图片和title。当页面中没有图片时,会采用平台默认的图片,当页面没有title时,会使用页面的链接地址作为分享的标题。这里可以通过设置shareData对象和调用jsbridge方法自定义分享的数据,包括分享的图片,标题,描述等。

像这种代码太具有依赖性,使用方法完全取决于对方平台的接口,相对来说,维护成本也较高。不过有时为了项目的推广和流量,这样做也是值得的。

1.首先定义shareData对象来保存分享的数据

view sourceprint?
01. window.shareData = {
02. "imgUrl""图片链接",
03. "tImgUrl""分享到朋友圈的图片",
04. "fImgUrl""分享给好友的图片",
05. "wImgUrl""分享到微博的图片",
06. "timeLineLink""分享到朋友圈的链接",
07. "sendFriendLink""分享给好友的链接",
08. "weiboLink""分享到微博的连接",
09. "tTitle""分享到朋友圈的标题",
10. "tContent""分享到朋友圈的描述",
11. "fTitle""分享给好友的标题",
12. "fContent""分享给好友的描述",
13. "wContent""分享到微博的内容"
14. };

如果tImgUrl,fImgUrl,wImgUrl没有的话则从imgUrl里取值。

2.调用jsbridge方法

微信支持分享到好友,朋友圈。易信则支持分享到好友,朋友圈,新浪微博。

客户端处理流程为:

1.检测web是否监听相应的分享事件('menu:share:appmessage','menu:share:timeline','menu:share:weibo'),如果web监听这些事件则触发这些事件,没有则到步骤2。

2.检查window下是否定义shareData,如果定义该数据则分享该数据中的内容,没有则到步骤3。

3.使用默认的分享机制(去网页抓取分享内容)。

方法调用,易信为例

1.分享给好友

view sourceprint?
01. YixinJSBridge.on('menu:share:appmessage', function (argv) {
02. YixinJSBridge.invoke('sendAppMessage', {
03. "img_url": window.shareData.imgUrl,
04. "img_width""640",
05. "img_height""640",
06. "link": window.shareData.sendFriendLink,
07. "desc": window.shareData.fContent,
08. "title": window.shareData.fTitle
09. }, function (res) {
10. 不用处理,客户端会有分享结果提示
11. })
12. });

2.分享到朋友圈

view sourceprint?
01. YixinJSBridge.on('menu:share:timeline', function (argv) {
02. YixinJSBridge.invoke('shareTimeline', {
03. "img_url": window.shareData.imgUrl,
04. "img_width""640",
05. "img_height""640",
06. "link": window.shareData.timeLineLink,
07. "desc": window.shareData.tContent,
08. "title": window.shareData.tTitle
09. }, function (res) {
10. 不用处理,客户端会有分享结果提示
11. });
12. });

3.分享到微博

view sourceprint?
1. YixinJSBridge.on('menu:share:weibo', function (argv) {
2. YixinJSBridge.invoke('shareWeibo', {
3. "content": window.shareData.wContent,
4. "url": window.shareData.weiboLink,
5. }, function (res) {
6. 不用处理,客户端会有分享结果提示
7. });
8. });

易信最新版本支持。

3.案例说明

view sourceprint?
001. 1 <!doctype html>
002. 2 <html>
003. 3 <head>
004. 4 <meta charset="utf-8">
005. 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
006. 6 <title>个性化定制微信易信平台分享内容</title>
007. 7 </head>
008. 8
009. 9 <body>
010. 10 <div class="m-shareintro">当一个链接在微信或易信<a href="http://www.it165.net/edu/ewl/"target="_blank" class="keylink">浏览器</a>里打开时,不管这个链接是公众号里的内容还是扫码打开的链接,分享给好友或是朋友圈时,分享的内容默认从网页中取,包括页面中的图片和title。当页面中没有图片时,会采用平台默认的图片,当页面没有title时,会使用页面的链接地址作为分享的标题。这里可以通过设置shareData对象和调用jsbridge方法自定义分享的数据,包括分享的图片,标题,描述等。</div>
011. 11
012. 12 <script>
013. 13 window.shareData = {
014. 14     "imgUrl":'http://m3.img.srcdd.com/farm5/d/2014/1012/21/791FDBCEFB8B31A0AF6EFBFE84CB41D7_B250_400_250_302.jpeg',  
015. 15     "tImgUrl":"http://m1.img.srcdd.com/farm4/d/2014/1012/21/E01EA983123F6279E784F17A37DFDC7B_B250_400_250_250.jpeg",
016. 16     "fImgUrl":"http://m2.img.srcdd.com/farm4/d/2014/1012/21/A77FB27F302693357F48BD6273768896_B250_400_250_270.jpeg",
017. 17     "wImgUrl":"http://m3.img.srcdd.com/farm5/d/2014/1012/21/B049FFAA94A568378BE08887609265E2_B250_400_250_265.jpeg",
018. 18     "timeLineLink": location.href,
019. 19     "sendFriendLink": location.href,
020. 20     "weiboLink": location.href,
021. 21     "tTitle""分享到朋友圈的标题",
022. 22     "tContent""分享到朋友圈的描述",
023. 23     "fTitle""分享给好友的标题",
024. 24     "fContent""分享给好友的描述",
025. 25     "wContent""分享到微博的内容"
026. 26 };
027. 27
028. 28 //分享给好友
029. 29 var _weixinSendAppMessage = function(){
030. 30     WeixinJSBridge.on('menu:share:appmessage', function (argv) {
031. 31         WeixinJSBridge.invoke('sendAppMessage', {
032. 32             "img_url": window.shareData.imgUrl,
033. 33             "img_width""640",
034. 34             "img_height""640",
035. 35             "link": window.shareData.sendFriendLink,
036. 36             "desc": window.shareData.fContent,
037. 37             "title": window.shareData.fTitle
038. 38         }, function (res) {
039. 39             //不用处理,客户端会有分享结果提示
040. 40         })
041. 41     });
042. 42 };
043. 43
044. 44 //分享到朋友圈
045. 45 var _weixinShareTimeline = function(){
046. 46     WeixinJSBridge.on('menu:share:timeline', function (argv) {
047. 47         WeixinJSBridge.invoke('shareTimeline', {
048. 48             "img_url": window.shareData.imgUrl,
049. 49             "img_width""640",
050. 50             "img_height""640",
051. 51             "link": window.shareData.timeLineLink,
052. 52             "desc": window.shareData.tContent,
053. 53             "title": window.shareData.tTitle
054. 54         }, function (res) {
055. 55             //不用处理,客户端会有分享结果提示
056. 56         });
057. 57     });
058. 58 };
059. 59    
060. 60 //分享给好友
061. 61 var _yixinSendAppMessage = function(){
062. 62     YixinJSBridge.on('menu:share:appmessage', function (argv) {
063. 63         YixinJSBridge.invoke('sendAppMessage', {
064. 64             "img_url": window.shareData.imgUrl,
065. 65             "img_width""640",
066. 66             "img_height""640",
067. 67             "link": window.shareData.sendFriendLink,
068. 68             "desc": window.shareData.fContent,
069. 69             "title": window.shareData.fTitle
070. 70         }, function (res) {
071. 71             //不用处理,客户端会有分享结果提示
072. 72         })
073. 73     });
074. 74 };
075. 75
076. 76 //分享到朋友圈
077. 77 var _yixinShareTimeline = function(){
078. 78     YixinJSBridge.on('menu:share:timeline', function (argv) {
079. 79         YixinJSBridge.invoke('shareTimeline', {
080. 80             "img_url": window.shareData.imgUrl,
081. 81             "img_width""640",
082. 82             "img_height""640",
083. 83             "link": window.shareData.timeLineLink,
084. 84             "desc": window.shareData.tContent,
085. 85             "title": window.shareData.tTitle
086. 86         }, function (res) {
087. 87             //不用处理,客户端会有分享结果提示
088. 88         });
089. 89     });
090. 90 };
091. 91
092. 92 //分享到微博
093. 93 var _yixinShareWeibo = function(){
094. 94     YixinJSBridge.on('menu:share:weibo', function (argv) {
095. 95         YixinJSBridge.invoke('shareWeibo', {
096. 96             "content": window.shareData.wContent,
097. 97             "url": window.shareData.weiboLink,
098. 98         }, function (res) {
099. 99             //不用处理,客户端会有分享结果提示
100. 100         });
101. 101     });   
102. 102 };
103. 103
104. 104 if(navigator.userAgent.toLowerCase().indexOf('micromessenger')>0) {
105. 105     if(!!window.WeixinJSBridge){
106. 106         _weixinSendAppMessage();
107. 107         _weixinShareTimeline();
108. 108     }else{
109. 109         document.addEventListener('WeixinJSBridgeReady',function(){
110. 110             _weixinSendAppMessage();
111. 111             _weixinShareTimeline();
112. 112         },false);
113. 113     }
114. 114 }else if(navigator.userAgent.toLowerCase().indexOf('yixin') > 0){
115. 115     if(!!window.YixinJSBridge){
116. 116         _yixinSendAppMessage();
117. 117         _yixinShareTimeline();
118. 118     }else{
119. 119         document.addEventListener('YixinJSBridgeReady', function() {
120. 120             _yixinSendAppMessage();
121. 121             _yixinShareTimeline();
122. 122         },false);
123. 123     }
124. 124 }
125. 125 </script>
126. 126 </body>
127. 127 </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值