微信分享 使用weixin js sdk 兼容 旧版本 分类: 微信分享 微信 微信js sdk 2015-01-28 13:09 550人阅读 评论(3) 收藏
2015-01-28 13:09
781 查看
首先头部使用微信js sdk php版本demo上头部php配置appid和appsecret那几行
js部分,除了调用基本js库,weixin js sdk库,自己另外封装了一个core.js
其中判断weixin版本使用的是之前在
http://blog.csdn.net/snow_finland/article/details/43227643
这个当中提到的封装的函数
set_weixin_share是兼容新版和旧版本的微信分享,
旧版本(微信说是被修复的漏洞)中,会根据window.ShareData配置的值动态变化,所以只需要调用一次即可
新版本中config的配置只需要一次,而动态变化的话,需要反复调用,所以ready的方法单独封装了,方便反复调用
在头部使用微信js sdk php版本demo上头部php配置的php(html)文件中的js部分
js部分,除了调用基本js库,weixin js sdk库,自己另外封装了一个core.js
其中判断weixin版本使用的是之前在
http://blog.csdn.net/snow_finland/article/details/43227643
这个当中提到的封装的函数
function get_broswer_info(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/weibo/i) == "weibo"){ return 1; }else if(ua.indexOf('qq/')!= -1){ return 2; }else if(ua.match(/MicroMessenger/i)=="micromessenger"){ var v_weixin = ua.split('micromessenger')[1]; v_weixin = v_weixin.substring(1,6); v_weixin = v_weixin.split(' ')[0]; if(v_weixin.split('.').length == 2){ v_weixin = v_weixin + '.0'; } if(v_weixin < '6.0.2'){ return 3; }else{ return 4; } }else{ return 0; } } function reset_weixin_share(){ wx.ready(function () { wx.onMenuShareTimeline({ // 分享到朋友圈 title: window.ShareData.TimelineTitle, // 分享标题 link: window.ShareData.link, // 分享链接 imgUrl: window.ShareData.img, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 window.ShareData.TimelineSuccess(); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareAppMessage({ // 分享给朋友 title: window.ShareData.FriendTitle, // 分享标题 desc: window.ShareData.FriendDesc, // 分享描述 link: window.ShareData.link, // 分享链接 imgUrl: window.ShareData.img, // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 window.ShareData.NormalSuccess(); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareQQ({ // 分享到QQ title: window.ShareData.QQTitle, // 分享标题 desc: window.ShareData.QQDesc, // 分享描述 link: window.ShareData.link, // 分享链接 imgUrl: window.ShareData.img, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 window.ShareData.NormalSuccess(); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareWeibo({ // 分享到腾讯微博 title: window.ShareData.WeiboTitle, // 分享标题 desc: window.ShareData.WeiboDesc, // 分享描述 link: window.ShareData.link, // 分享链接 imgUrl: window.ShareData.img, // 分享图标 success: function () { // 用户确认分享后执行的回调函数 window.ShareData.NormalSuccess(); }, cancel: function () { // 用户取消分享后执行的回调函数 } }); // wx.hideOptionMenu(); // 隐藏右上角菜单接口 wx.showOptionMenu(); // 显示右上角菜单接口 }); } function set_weixin_share(){ if(broswer == 3){ function onBridgeReady(){ WeixinJSBridge.call('showOptionMenu'); // 显示右上角菜单 // WeixinJSBridge.call('hideOptionMenu'); // 隐藏右上角菜单 } if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } }else{ onBridgeReady(); } document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.on('menu:share:appmessage', function(argv) { // 分享给朋友 WeixinJSBridge.invoke('sendAppMessage', { "img_url": window.ShareData.img, "link": window.ShareData.link, "desc": window.ShareData.FriendDesc, "title": window.ShareData.FriendTitle }, function(res) { window.ShareData.NormalSuccess(); }) }); WeixinJSBridge.on('menu:share:timeline', function(argv) { // 分享到朋友圈 WeixinJSBridge.invoke('shareTimeline', { "img_url": window.ShareData.img, "link": window.ShareData.link, "desc": window.ShareData.TimelineTitle, "title": window.ShareData.TimelineTitle }, function(res) { window.ShareData.TimelineSuccess(); }); }); WeixinJSBridge.on('menu:share:weibo', function(argv) { // 分享到腾讯微博 WeixinJSBridge.invoke('shareWeibo', { "content": window.ShareData.WeiboDesc, "url": window.ShareData.link }, function(res) { window.ShareData.NormalSuccess(); }); }); }, false); }else if(broswer == 4){ wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: config_info.appId,// 必填,公众号的唯一标识 timestamp: config_info.timestamp,// 必填,生成签名的时间戳 nonceStr: config_info.nonceStr,// 必填,生成签名的随机串 signature: config_info.signature,// 必填,签名,见附录1 jsApiList: [ // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 // 所有要调用的 API 都要加到这个列表中 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'hideOptionMenu', 'showOptionMenu' ] }); reset_weixin_share(); } }
set_weixin_share是兼容新版和旧版本的微信分享,
旧版本(微信说是被修复的漏洞)中,会根据window.ShareData配置的值动态变化,所以只需要调用一次即可
新版本中config的配置只需要一次,而动态变化的话,需要反复调用,所以ready的方法单独封装了,方便反复调用
在头部使用微信js sdk php版本demo上头部php配置的php(html)文件中的js部分
var broswer = get_broswer_info(); var config_info = { appId: '<?php echo $signPackage["appId"];?>',// 必填,公众号的唯一标识 timestamp: <?php echo $signPackage["timestamp"];?>,// 必填,生成签名的时间戳 nonceStr: '<?php echo $signPackage["nonceStr"];?>',// 必填,生成签名的随机串 signature: '<?php echo $signPackage["signature"];?>'// 必填,签名,见附录1 }; window.ShareData = { link : , // 链接地址 img : , // 分享图标 TimelineTitle : '这里是朋友圈标题', // 朋友圈标题 FriendTitle : '这里是朋友标题', // 朋友标题 FriendDesc : '朋友描述在这里', // 朋友描述 QQTitle : 'qq标题', // QQ标题 QQDesc : 'qq描述在这里', // QQ描述 WeiboTitle : 'weibo标题', // Weibo标题 WeiboDesc : '这是weibo描述', // Weibo描述 TimelineSuccess : function(){ // 朋友圈分享成功 alert('朋友圈分享成功!'); }, NormalSuccess : function(){ // 其它分享成功 alert('其它分享成功!'); } }; $('#changeShare').bind({ 'touchstart' : function(){ // 这里是模拟动态改变分享内容的部分 var rand_num = Math.floor(Math.random() * ( 1000 + 1)); window.ShareData.TimelineTitle = '这里是朋友圈'+rand_num+'标题'; // 朋友圈标题 window.ShareData.FriendTitle = '这里是朋友'+rand_num+'标题'; // 朋友标题 window.ShareData.FriendDesc = '朋友描述'+rand_num+'在这里'; // 朋友描述 window.ShareData.QQTitle = 'qq'+rand_num+'标题'; // QQ标题 window.ShareData.QQDesc = 'qq'+rand_num+'描述在这里'; // QQ描述 window.ShareData.WeiboTitle = 'weibo'+rand_num+'标题'; // Weibo标题 window.ShareData.WeiboDesc = '这是weibo'+rand_num+'描述'; // Weibo描述 if(broswer == 4){ reset_weixin_share(); } } }); set_weixin_share();
相关文章推荐
- 微信分享 使用weixin js sdk 兼容 旧版本
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- 微信分享 不借助新版sdk 的分享方法 分类: 微信 微信分享 2015-01-28 12:24 366人阅读 评论(0) 收藏
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- js 根据 useragent 判断访问网页的 设备 和 浏览器 分类: 浏览器检测 浏览器兼容 判断设备 判断浏览器 2015-01-28 11:23 266人阅读 评论(0) 收藏
- Hi3531 SDK 安装以及升级使用说明 分类: HI3531 2013-08-20 17:26 2657人阅读 评论(0) 收藏
- 判断浏览器及版本demo(IE11及以下,firefox,chrome,safari,opera) 分类: 浏览器兼容 浏览器检测 2014-01-27 17:12 1337人阅读 评论(0) 收藏
- UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏
- 使用Node.js+Socket.IO搭建WebSocket实时应用 分类: Android网络 2014-06-29 12:25 144人阅读 评论(0) 收藏
- UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 614人阅读 评论(1) 收藏
- AxWindowsMediaPlayer使用 分类: .NET 2012-03-31 12:50 1644人阅读 评论(0) 收藏
- 使用reduce函数 分类: python 2013-04-18 20:34 316人阅读 评论(0) 收藏
- ubuntu中安装man手册查看函数原型 分类: linux使用 2010-02-28 22:50 2453人阅读 评论(0) 收藏 举报 ubuntu语言linuxlibrarysocketsys
- 利用SecureCRT上传、下载文件(使用sz与rz命令) 分类: ubuntu 2013-04-23 10:39 231人阅读 评论(0) 收藏
- 使用glob模块,遍历E盘下的mp3文件 分类: python 小练习 2013-05-15 15:40 405人阅读 评论(0) 收藏
- 数据库崩溃后对redo log的使用 分类: H2_ORACLE 2013-02-04 14:05 309人阅读 评论(0) 收藏
- 使用C语言读取properties文件V1.0 分类: H_HISTORY 2013-02-26 12:37 946人阅读 评论(0) 收藏
- 获得html 属性值的集中方法 分类: 网页编程【html、js】 2009-09-08 12:32 861人阅读 评论(1) 收藏
- python中map()函数的使用 分类: python 2012-12-20 16:18 121人阅读 评论(0) 收藏
- Oracle从软件安装到运行的全流程 分类: H2_ORACLE 2013-05-18 13:09 1072人阅读 评论(0) 收藏