当前位置:首页 > H5 > 正文内容

微信禁用右上角的分享按钮,以及隐藏分享的子按钮等菜单项

高老师8年前 (2018-08-29)H55647

和腾讯合作的项目活动中腾讯要求我们必须隐藏朋友圈分享功能,一直以为没有官方Api,百般查找才在文档中找到,可能是自己不太细心。

微信官方文档在jsjdk的"界面操作"中有详细说明:

关闭当前网页窗口接口

wx.closeWindow();

批量隐藏功能按钮接口

wx.hideMenuItems({
menuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
});

批量显示功能按钮接口

wx.showMenuItems({
menuList: [] // 要显示的菜单项,所有menu项见附录3
});

隐藏所有非基础按钮接口

wx.hideAllNonBaseMenuItem();
// “基本类”按钮详见附录3

显示所有功能按钮接口

wx.showAllNonBaseMenuItem();

通过jsjdk我的代码是这样的:

wx.hideMenuItems({
menuList: ["menuItem:share:timeline", "menuItem:copyUrl", "menuItem:share:appMessage", "menuItem:share:qq", "menuItem:share:weiboApp", "menuItem:favorite", "menuItem:share:facebook", "menuItem:share:QZone", "menuItem:editTag", "menuItem:delete", "menuItem:copyUrl", "menuItem:originPage", "menuItem:readMode", "menuItem:openWithQQBrowser", "menuItem:openWithSafari", "menuItem:share:email", "menuItem:share:brand"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
});

以上代码中我隐藏了很多选项,例如timeline是朋友圈的意思。

另外一种方式是不需要微信Jsjdk支持的,内置微信浏览器的方法(但是全部都会隐藏):

function onBridgeReady() {
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();
}

以上方式在安卓中会非常完美,但是在ios系统中如果再次返回当前页面则出现了失效的问题,必须刷新才行。我通过页面监听返回事件来再次刷新页面或者重新执行jsjdk,但是部分页面不是我们的url。于是同事建议在页面使用定时器持续的进行jsjdk设置。由于是永久循环执行定时器,就算页面不刷新再次返回依然有效。一定要注意定时器执行的是wx.ready后的方法。例如上面的第二种方式只需要持续执行WeixinJSBridge.call('hideOptionMenu');

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/270.html

分享给朋友:

“微信禁用右上角的分享按钮,以及隐藏分享的子按钮等菜单项” 的相关文章

Javascript-WebSql的用法

Javascript-WebSql的用法

    WebSql的原理是浏览器集成了sqllite数据库,Js操作,浏览器协助完成,没有多复杂。<!--          三个核心方法   ...

Javascript事件冒泡和捕捉

Javascript事件冒泡和捕捉

捕捉模式从DOM最顶层一直到最后一层,冒泡正好相反,具体运行以下实例测试.<!DOCTYPE html> <html> <head> <title>捕捉和冒泡</title> <meta charset="...

Javascript事件冒泡和捕捉的阻止

Javascript事件冒泡和捕捉的阻止

<!DOCTYPE html> <html> <head> <title>捕捉和冒泡</title> <meta charset="utf-8"> </head> <bo...

ajax上传文件,formdata上传文件,ajax上传file文件,原生ajax上传文件,ajax上传图片,ajax上传文件formdata

ajax上传文件,formdata上传文件,ajax上传file文件,原生ajax上传文件,ajax上传图片,ajax上传文件formdata

通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同...

js cookie操作,js获取cookie值的方法,js 设置cookie

js cookie操作,js获取cookie值的方法,js 设置cookie

维护老项目中客户提到一个页面中有6个表单以上,导致每次保存一个其他的数据全部丢失,自己比较懒没有全部更换为ajax.用户每次输入完成或者选择完成记录cookie,每次提交后加载页面完成初始化cookie即可。以下代码取自w3school比较完善,之前在其他博客使用的经常出现bug,这个比较推荐使用:...

 js 工厂模式示例,js工厂模式原理

js 工厂模式示例,js工厂模式原理

查看文章前你需要了解以下2点://1.this指向的是windows对象,通过console.log(this)可以查看到对象包含所有的方法和属性//2.全局变量属于this对象的属性通过console.log(this)可以查看到对象包含我们设置的全局变量我们经常在创建相同结构的Js对象会重复的设...