搜索
首页微信小程序微信开发利用js实现微信分享实例代码

利用js实现微信分享实例代码

Mar 14, 2017 pm 02:13 PM
js微信分享

这篇文章主要介绍了js实现微信分享朋友链接显示,对学习ASP.NET编程技术有所帮助,感兴趣的小伙伴们可以参考一下

通常自己做的一个页面想通过微信像朋友分享时,展示的标题和描述都是不是自己想要的,自己查了一些资料,原来是通过js来进行控制
展示效果如下:

利用js实现微信分享实例代码

利用js实现微信分享实例代码

标题、描述、还有分享的图片都是有js来控制的。
js代码如下


<script>
 var dataForWeixin = {
  appId: "",
  MsgImg: "Christmas/201012189457639.gif",//显示图片
  TLImg: "Christmas/201012189457639.gif",//显示图片
  url: "Christmas/6.html?stra=!u738B!u4F1F",//跳转地址
  title: "将我的思念和祝福送给您,颐养源祝大家圣诞快乐",//标题内容
  desc: "将我的思念和祝福送给您,颐养源祝大家圣诞快乐",//描述内容
  fakeid: "",
  callback: function () { }
 };
 (function () {
  var onBridgeReady = function () {
  WeixinJSBridge.on(&#39;menu:share:appmessage&#39;, function (argv) {
   WeixinJSBridge.invoke(&#39;sendAppMessage&#39;, {
   "appid": dataForWeixin.appId,
   "img_url": dataForWeixin.MsgImg,
   "img_width": "120",
   "img_height": "120",
   "link": dataForWeixin.url,
   "desc": dataForWeixin.desc,
   "title": dataForWeixin.title
   }, function (res) { (dataForWeixin.callback)(); });
  });
  WeixinJSBridge.on(&#39;menu:share:timeline&#39;, function (argv) {
   (dataForWeixin.callback)();
   WeixinJSBridge.invoke(&#39;shareTimeline&#39;, {
   "img_url": dataForWeixin.TLImg,
   "img_width": "120",
   "img_height": "120",
   "link": dataForWeixin.url,
   "desc": dataForWeixin.desc,
   "title": dataForWeixin.title
   }, function (res) { });
  });
  WeixinJSBridge.on(&#39;menu:share:weibo&#39;, function (argv) {
   WeixinJSBridge.invoke(&#39;shareWeibo&#39;, {
   "content": dataForWeixin.title,
   "url": dataForWeixin.url
   }, function (res) { (dataForWeixin.callback)(); });
  });
  WeixinJSBridge.on(&#39;menu:share:facebook&#39;, function (argv) {
   (dataForWeixin.callback)();
   WeixinJSBridge.invoke(&#39;shareFB&#39;, {
   "img_url": dataForWeixin.TLImg,
   "img_width": "120",
   "img_height": "120",
   "link": dataForWeixin.url,
   "desc": dataForWeixin.desc,
   "title": dataForWeixin.title
   }, function (res) { });
  });
  };
 
  if (document.addEventListener) {
  document.addEventListener(&#39;WeixinJSBridgeReady&#39;, onBridgeReady, false);
  } else if (document.attachEvent) {
  document.attachEvent(&#39;WeixinJSBridgeReady&#39;, onBridgeReady);
  document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, onBridgeReady);
  }
 })();
</script>

另一个微信分享js代码:


/**!
 * 微信内置浏览器的Javascript API,功能包括:
 *
 * 1、分享到微信朋友圈
 * 2、分享给微信好友
 * 3、分享到腾讯微博
 * 4、新的分享接口,包含朋友圈、好友、微博的分享(for iOS)
 * 5、隐藏/显示右上角的菜单入口
 * 6、隐藏/显示底部浏览器工具栏
 * 7、获取当前的网络状态
 * 8、调起微信客户端的图片播放组件
 * 9、关闭公众平台Web页面
 */
var WeixinApi = (function () {

 "use strict";

 /**
 * 分享到微信朋友圈
 * @param {Object} data 待分享的信息
 * @p-config {String} appId 公众平台的appId(服务号可用)
 * @p-config {String} imgUrl 图片地址
 * @p-config {String} link 链接地址
 * @p-config {String} desc 描述
 * @p-config {String} title 分享的标题
 *
 * @param {Object} callbacks 相关回调方法
 * @p-config {Boolean} async   ready方法是否需要异步执行,默认false
 * @p-config {Function} ready(argv)  就绪状态
 * @p-config {Function} dataLoaded(data) 数据加载完成后调用,async为true时有用,也可以为空
 * @p-config {Function} cancel(resp) 取消
 * @p-config {Function} fail(resp) 失败
 * @p-config {Function} confirm(resp) 成功
 * @p-config {Function} all(resp) 无论成功失败都会执行的回调
 */
 function weixinShareTimeline(data, callbacks) {
 callbacks = callbacks || {};
 var shareTimeline = function (theData) {
  WeixinJSBridge.invoke(&#39;shareTimeline&#39;, {
  "appid":theData.appId ? theData.appId : &#39;&#39;,
  "img_url":theData.imgUrl,
  "link":theData.link,
  "desc":theData.title,
  "title":theData.desc, // 注意这里要分享出去的内容是desc
  "img_width":"640",
  "img_height":"640"
  }, function (resp) {
  switch (resp.err_msg) {
   // share_timeline:cancel 用户取消
   case &#39;share_timeline:cancel&#39;:
   callbacks.cancel && callbacks.cancel(resp);
   break;
   // share_timeline:confirm 发送成功
   case &#39;share_timeline:confirm&#39;:
   case &#39;share_timeline:ok&#39;:
   callbacks.confirm && callbacks.confirm(resp);
   break;
   // share_timeline:fail 发送失败
   case &#39;share_timeline:fail&#39;:
   default:
   callbacks.fail && callbacks.fail(resp);
   break;
  }
  // 无论成功失败都会执行的回调
  callbacks.all && callbacks.all(resp);
  });
 };
 WeixinJSBridge.on(&#39;menu:share:timeline&#39;, function (argv) {
  if (callbacks.async && callbacks.ready) {
  window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
   window["_wx_loadedCb_"] = new Function();
  }
  callbacks.dataLoaded = function (newData) {
   window["_wx_loadedCb_"](newData);
   shareTimeline(newData);
  };
  // 然后就绪
  callbacks.ready && callbacks.ready(argv);
  } else {
  // 就绪状态
  callbacks.ready && callbacks.ready(argv);
  shareTimeline(data);
  }
 });
 }

 /**
 * 发送给微信上的好友
 * @param {Object} data 待分享的信息
 * @p-config {String} appId 公众平台的appId(服务号可用)
 * @p-config {String} imgUrl 图片地址
 * @p-config {String} link 链接地址
 * @p-config {String} desc 描述
 * @p-config {String} title 分享的标题
 *
 * @param {Object} callbacks 相关回调方法
 * @p-config {Boolean} async   ready方法是否需要异步执行,默认false
 * @p-config {Function} ready(argv)  就绪状态
 * @p-config {Function} dataLoaded(data) 数据加载完成后调用,async为true时有用,也可以为空
 * @p-config {Function} cancel(resp) 取消
 * @p-config {Function} fail(resp) 失败
 * @p-config {Function} confirm(resp) 成功
 * @p-config {Function} all(resp) 无论成功失败都会执行的回调
 */
 function weixinSendAppMessage(data, callbacks) {
 callbacks = callbacks || {};
 var sendAppMessage = function (theData) {
  WeixinJSBridge.invoke(&#39;sendAppMessage&#39;, {
  "appid":theData.appId ? theData.appId : &#39;&#39;,
  "img_url":theData.imgUrl,
  "link":theData.link,
  "desc":theData.desc,
  "title":theData.title,
  "img_width":"640",
  "img_height":"640"
  }, function (resp) {
  switch (resp.err_msg) {
   // send_app_msg:cancel 用户取消
   case &#39;send_app_msg:cancel&#39;:
   callbacks.cancel && callbacks.cancel(resp);
   break;
   // send_app_msg:confirm 发送成功
   case &#39;send_app_msg:confirm&#39;:
   case &#39;send_app_msg:ok&#39;:
   callbacks.confirm && callbacks.confirm(resp);
   break;
   // send_app_msg:fail 发送失败
   case &#39;send_app_msg:fail&#39;:
   default:
   callbacks.fail && callbacks.fail(resp);
   break;
  }
  // 无论成功失败都会执行的回调
  callbacks.all && callbacks.all(resp);
  });
 };
 WeixinJSBridge.on(&#39;menu:share:appmessage&#39;, function (argv) {
  if (callbacks.async && callbacks.ready) {
  window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
   window["_wx_loadedCb_"] = new Function();
  }
  callbacks.dataLoaded = function (newData) {
   window["_wx_loadedCb_"](newData);
   sendAppMessage(newData);
  };
  // 然后就绪
  callbacks.ready && callbacks.ready(argv);
  } else {
  // 就绪状态
  callbacks.ready && callbacks.ready(argv);
  sendAppMessage(data);
  }
 });
 }

 /**
 * 分享到腾讯微博
 * @param {Object} data 待分享的信息
 * @p-config {String} link 链接地址
 * @p-config {String} desc 描述
 *
 * @param {Object} callbacks 相关回调方法
 * @p-config {Boolean} async   ready方法是否需要异步执行,默认false
 * @p-config {Function} ready(argv)  就绪状态
 * @p-config {Function} dataLoaded(data) 数据加载完成后调用,async为true时有用,也可以为空
 * @p-config {Function} cancel(resp) 取消
 * @p-config {Function} fail(resp) 失败
 * @p-config {Function} confirm(resp) 成功
 * @p-config {Function} all(resp) 无论成功失败都会执行的回调
 */
 function weixinShareWeibo(data, callbacks) {
 callbacks = callbacks || {};
 var shareWeibo = function (theData) {
  WeixinJSBridge.invoke(&#39;shareWeibo&#39;, {
  "content":theData.desc,
  "url":theData.link
  }, function (resp) {
  switch (resp.err_msg) {
   // share_weibo:cancel 用户取消
   case &#39;share_weibo:cancel&#39;:
   callbacks.cancel && callbacks.cancel(resp);
   break;
   // share_weibo:confirm 发送成功
   case &#39;share_weibo:confirm&#39;:
   case &#39;share_weibo:ok&#39;:
   callbacks.confirm && callbacks.confirm(resp);
   break;
   // share_weibo:fail 发送失败
   case &#39;share_weibo:fail&#39;:
   default:
   callbacks.fail && callbacks.fail(resp);
   break;
  }
  // 无论成功失败都会执行的回调
  callbacks.all && callbacks.all(resp);
  });
 };
 WeixinJSBridge.on(&#39;menu:share:weibo&#39;, function (argv) {
  if (callbacks.async && callbacks.ready) {
  window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
   window["_wx_loadedCb_"] = new Function();
  }
  callbacks.dataLoaded = function (newData) {
   window["_wx_loadedCb_"](newData);
   shareWeibo(newData);
  };
  // 然后就绪
  callbacks.ready && callbacks.ready(argv);
  } else {
  // 就绪状态
  callbacks.ready && callbacks.ready(argv);
  shareWeibo(data);
  }
 });
 }


 /**
 * 新的分享接口
 * @param {Object} data 待分享的信息
 * @p-config {String} appId 公众平台的appId(服务号可用)
 * @p-config {String} imgUrl 图片地址
 * @p-config {String} link 链接地址
 * @p-config {String} desc 描述
 * @p-config {String} title 分享的标题
 *
 * @param {Object} callbacks 相关回调方法
 * @p-config {Boolean} async   ready方法是否需要异步执行,默认false
 * @p-config {Function} ready(argv,shareTo)  就绪状态
 * @p-config {Function} dataLoaded(data) 数据加载完成后调用,async为true时有用,也可以为空
 * @p-config {Function} cancel(resp,shareTo) 取消
 * @p-config {Function} fail(resp,shareTo) 失败
 * @p-config {Function} confirm(resp,shareTo) 成功
 * @p-config {Function} all(resp,shareTo) 无论成功失败都会执行的回调
 */
 function weixinGeneralShare(data, callbacks) {
 callbacks = callbacks || {};
 var generalShare = function (general,theData) {

  // 如果是分享到朋友圈,则需要把title和desc交换一下
  if(general.shareTo == &#39;timeline&#39;) {
  var title = theData.title;
  theData.title = theData.desc || title;
  theData.desc = title;
  }

  // 分享出去
  general.generalShare({
  "appid":theData.appId ? theData.appId : &#39;&#39;,
  "img_url":theData.imgUrl,
  "link":theData.link,
  "desc":theData.desc,
  "title":theData.title,
  "img_width":"640",
  "img_height":"640"
  }, function (resp) {
  switch (resp.err_msg) {
   // general_share:cancel 用户取消
   case &#39;general_share:cancel&#39;:
   callbacks.cancel && callbacks.cancel(resp ,general.shareTo);
   break;
   // general_share:confirm 发送成功
   case &#39;general_share:confirm&#39;:
   case &#39;general_share:ok&#39;:
   callbacks.confirm && callbacks.confirm(resp ,general.shareTo);
   break;
   // general_share:fail 发送失败
   case &#39;general_share:fail&#39;:
   default:
   callbacks.fail && callbacks.fail(resp ,general.shareTo);
   break;
  }
  // 无论成功失败都会执行的回调
  callbacks.all && callbacks.all(resp ,general.shareTo);
  });
 };
 WeixinJSBridge.on(&#39;menu:general:share&#39;, function (general) {
  if (callbacks.async && callbacks.ready) {
  window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
   window["_wx_loadedCb_"] = new Function();
  }
  callbacks.dataLoaded = function (newData) {
   window["_wx_loadedCb_"](newData);
   generalShare(general,newData);
  };
  // 然后就绪
  callbacks.ready && callbacks.ready(general,general.shareTo);
  } else {
  // 就绪状态
  callbacks.ready && callbacks.ready(general,general.shareTo);
  generalShare(general,data);
  }
 });
 }

 /**
 * 加关注(此功能只是暂时先加上,不过因为权限限制问题,不能用,如果你的站点是部署在*.qq.com下,也许可行)
 * @param {String} appWeixinId 微信公众号ID
 * @param {Object} callbacks 回调方法
 * @p-config {Function} fail(resp) 失败
 * @p-config {Function} confirm(resp) 成功
 */
 function addContact(appWeixinId,callbacks){
 callbacks = callbacks || {};
 WeixinJSBridge.invoke("addContact", {
  webtype: "1",
  username: appWeixinId
 }, function (resp) {
  var success = !resp.err_msg || "add_contact:ok" == resp.err_msg || "add_contact:added" == resp.err_msg;
  if(success) {
  callbacks.success && callbacks.success(resp);
  }else{
  callbacks.fail && callbacks.fail(resp);
  }
 })
 }

 /**
 * 调起微信Native的图片播放组件。
 * 这里必须对参数进行强检测,如果参数不合法,直接会导致微信客户端crash
 *
 * @param {String} curSrc 当前播放的图片地址
 * @param {Array} srcList 图片地址列表
 */
 function imagePreview(curSrc,srcList) {
 if(!curSrc || !srcList || srcList.length == 0) {
  return;
 }
 WeixinJSBridge.invoke(&#39;imagePreview&#39;, {
  &#39;current&#39; : curSrc,
  &#39;urls&#39; : srcList
 });
 }

 /**
 * 显示网页右上角的按钮
 */
 function showOptionMenu() {
 WeixinJSBridge.call(&#39;showOptionMenu&#39;);
 }


 /**
 * 隐藏网页右上角的按钮
 */
 function hideOptionMenu() {
 WeixinJSBridge.call(&#39;hideOptionMenu&#39;);
 }

 /**
 * 显示底部工具栏
 */
 function showToolbar() {
 WeixinJSBridge.call(&#39;showToolbar&#39;);
 }

 /**
 * 隐藏底部工具栏
 */
 function hideToolbar() {
 WeixinJSBridge.call(&#39;hideToolbar&#39;);
 }

 /**
 * 返回如下几种类型:
 *
 * network_type:wifi wifi网络
 * network_type:edge 非wifi,包含3G/2G
 * network_type:fail 网络断开连接
 * network_type:wwan 2g或者3g
 *
 * 使用方法:
 * WeixinApi.getNetworkType(function(networkType){
 *
 * });
 *
 * @param callback
 */
 function getNetworkType(callback) {
 if (callback && typeof callback == &#39;function&#39;) {
  WeixinJSBridge.invoke(&#39;getNetworkType&#39;, {}, function (e) {
  // 在这里拿到e.err_msg,这里面就包含了所有的网络类型
  callback(e.err_msg);
  });
 }
 }

 /**
 * 关闭当前微信公众平台页面
 */
 function closeWindow() {
 WeixinJSBridge.call("closeWindow");
 }

 /**
 * 当页面加载完毕后执行,使用方法:
 * WeixinApi.ready(function(Api){
 * // 从这里只用Api即是WeixinApi
 * });
 * @param readyCallback
 */
 function wxJsBridgeReady(readyCallback) {
 if (readyCallback && typeof readyCallback == &#39;function&#39;) {
  var Api = this;
  var wxReadyFunc = function () {
  readyCallback(Api);
  };
  if (typeof window.WeixinJSBridge == "undefined"){
  if (document.addEventListener) {
   document.addEventListener(&#39;WeixinJSBridgeReady&#39;, wxReadyFunc, false);
  } else if (document.attachEvent) {
   document.attachEvent(&#39;WeixinJSBridgeReady&#39;, wxReadyFunc);
   document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, wxReadyFunc);
  }
  }else{
  wxReadyFunc();
  }
 }
 }

 return {
 version  :"2.0",
 ready  :wxJsBridgeReady,
 shareToTimeline :weixinShareTimeline,
 shareToWeibo :weixinShareWeibo,
 shareToFriend :weixinSendAppMessage,
 generalShare :weixinGeneralShare,
 addContact :addContact,
 showOptionMenu :showOptionMenu,
 hideOptionMenu :hideOptionMenu,
 showToolbar :showToolbar,
 hideToolbar :hideToolbar,
 getNetworkType :getNetworkType,
 imagePreview :imagePreview,
 closeWindow :closeWindow
 };
})();

以上就是微信分享js代码,希望对大家的学习有所帮助。

以上是利用js实现微信分享实例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境