微信jssdk在企业微信中失效
前段时候,开发了一个H5页面,由于老板要求需要自定义分享链接样式(也就是分享出去是卡片样式)。于是使用了jssdk;
jssdk官方链接(本文不是讲的如何使用这个sdk):
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1
最近,老板要求在企业微信中打开这个h5页面后, 不能使用复制链接功能。主要是想避免销售直接粘贴后就发给客户,让销售只能走h5的分享进行发送。
企业微信其实和微信都是使用的一个sdk来控制h5的选项功能,但是这里有个坑:
下面代码可以正常使用:
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: 'wx764b87e48e670f08', // 必填,公众号的唯一标识
timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature ,// 必填,签名
jsApiList: [
'updateAppMessageShareData',
'updateTimelineShareData',
'hideMenuItems'
]
});
// 通过error接口处理失败验证
wx.error(function (errres) {
console.info("失败:", errres);
});
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
var sharedata = {
title: '分享标题', // 分享标题
desc: `分享描述`, // 分享描述
link: res.url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: location.protocol + "//" + location.host+ "/logo.png", // 分享图标
success: function () {
// 设置成功
}
}
// 记得判断,企业微信和微信暴露的函数不一样的,可能企业微信没有而微信有
if(wx.updateAppMessageShareData) {
wx.updateAppMessageShareData(sharedata);
}
// 记得判断,企业微信和微信暴露的函数不一样的,可能企业微信没有而微信有
if(wx.updateTimelineShareData) {
wx.updateTimelineShareData(sharedata);
}
// 记得判断,企业微信和微信暴露的函数不一样的,可能企业微信没有而微信有
if(wx.hideMenuItems) {
wx.hideMenuItems({// 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
menuList: [
"menuItem:copyUrl",
"menuItem:favorite",
"menuItem:share:timeline",
"menuItem:share:qq",
"menuItem:share:weiboApp",
"menuItem:share:facebook",
"menuItem:share:QZone",
"menuItem:editTag",
"menuItem:originPage"
]
});
}
});
一般jssdk开发时,在config中配置函数,再在ready中进行函数处理,这也是微信官方文档要求的流程。
这里的坑在于,某些函数在微信浏览器中是支持的,在企业微信浏览器中是不支持的。比如hideMenuItems
函数再两个中都支持,但是注册卡片分享的updateTimelineShareData和updateAppMessageShareData
函数,
这两只在微信中支持。所以函数那里需要使用if(wx.updateAppMessageShareData)
进行判断,不然不支持的就会报错影响后续业务逻辑了。
所有可以隐藏的参数见文档:18 附录3-所有菜单项列表