通常自己做的一个页面想通过微信像朋友分享时,展示的标题和描述都是不是自己想要的,自己查了一些资料,原来是通过js来进行控制
展示效果如下:
标题、描述、还有分享的图片都是有js来控制的。
js代码如下
另一个微信分享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('sharetimeline', { appid:thedata.appid ? thedata.appid : '', 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 'share_timeline:cancel': callbacks.cancel && callbacks.cancel(resp); break; // share_timeline:confirm 发送成功 case 'share_timeline:confirm': case 'share_timeline:ok': callbacks.confirm && callbacks.confirm(resp); break; // share_timeline:fail 发送失败 case 'share_timeline:fail': default: callbacks.fail && callbacks.fail(resp); break; } // 无论成功失败都会执行的回调 callbacks.all && callbacks.all(resp); }); }; weixinjsbridge.on('menu:share:timeline', 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('sendappmessage', { appid:thedata.appid ? thedata.appid : '', 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 'send_app_msg:cancel': callbacks.cancel && callbacks.cancel(resp); break; // send_app_msg:confirm 发送成功 case 'send_app_msg:confirm': case 'send_app_msg:ok': callbacks.confirm && callbacks.confirm(resp); break; // send_app_msg:fail 发送失败 case 'send_app_msg:fail': default: callbacks.fail && callbacks.fail(resp); break; } // 无论成功失败都会执行的回调 callbacks.all && callbacks.all(resp); }); }; weixinjsbridge.on('menu:share:appmessage', 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('shareweibo', { content:thedata.desc, url:thedata.link }, function (resp) { switch (resp.err_msg) { // share_weibo:cancel 用户取消 case 'share_weibo:cancel': callbacks.cancel && callbacks.cancel(resp); break; // share_weibo:confirm 发送成功 case 'share_weibo:confirm': case 'share_weibo:ok': callbacks.confirm && callbacks.confirm(resp); break; // share_weibo:fail 发送失败 case 'share_weibo:fail': default: callbacks.fail && callbacks.fail(resp); break; } // 无论成功失败都会执行的回调 callbacks.all && callbacks.all(resp); }); }; weixinjsbridge.on('menu:share:weibo', 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 == 'timeline') { var title = thedata.title; thedata.title = thedata.desc || title; thedata.desc = title; } // 分享出去 general.generalshare({ appid:thedata.appid ? thedata.appid : '', 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 'general_share:cancel': callbacks.cancel && callbacks.cancel(resp ,general.shareto); break; // general_share:confirm 发送成功 case 'general_share:confirm': case 'general_share:ok': callbacks.confirm && callbacks.confirm(resp ,general.shareto); break; // general_share:fail 发送失败 case 'general_share:fail': default: callbacks.fail && callbacks.fail(resp ,general.shareto); break; } // 无论成功失败都会执行的回调 callbacks.all && callbacks.all(resp ,general.shareto); }); }; weixinjsbridge.on('menu:general:share', 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('imagepreview', { 'current' : cursrc, 'urls' : srclist }); } /** * 显示网页右上角的按钮 */ function showoptionmenu() { weixinjsbridge.call('showoptionmenu'); } /** * 隐藏网页右上角的按钮 */ function hideoptionmenu() { weixinjsbridge.call('hideoptionmenu'); } /** * 显示底部工具栏 */ function showtoolbar() { weixinjsbridge.call('showtoolbar'); } /** * 隐藏底部工具栏 */ function hidetoolbar() { weixinjsbridge.call('hidetoolbar'); } /** * 返回如下几种类型: * * 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 == 'function') { weixinjsbridge.invoke('getnetworktype', {}, 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 == 'function') { var api = this; var wxreadyfunc = function () { readycallback(api); }; if (typeof window.weixinjsbridge == undefined){ if (document.addeventlistener) { document.addeventlistener('weixinjsbridgeready', wxreadyfunc, false); } else if (document.attachevent) { document.attachevent('weixinjsbridgeready', wxreadyfunc); document.attachevent('onweixinjsbridgeready', 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代码,希望对大家的学习有所帮助。