微信小程序右上角胶囊按钮无法真正隐藏,仅能通过uni.hideShareMenu()在onLoad中隐藏分享菜单项,且需满足基础库≥2.6.0、manifest.json勾选微信分享、pages.json配置enableShareAppMessage:true;朋友圈进入(scene=1154)需单独处理onShareTimeline并return null;安卓长按复制链接浮层无法拦截。

微信小程序的右上角胶囊按钮(含分享入口)无法真正隐藏,这是平台强制保留的功能入口;你只能隐藏“分享给朋友”和“分享到朋友圈”这两个菜单项,但胶囊本身、右上角「…」按钮始终存在。
uni.hideShareMenu() 必须在 onLoad 里调用才生效
这个 API 不是声明式配置,而是运行时指令,且只在页面加载初期起作用:
-
uni.hideShareMenu()要放在页面onLoad生命周期中,不能写在mounted、onReady或用户点击事件里——晚了就失效 - 基础库必须 ≥ 2.6.0,否则请改用
uni.hideShareTimeline()单独处理朋友圈入口 - 仅对微信小程序有效,H5 和 APP 端不识别该 API,需各自处理
- 调用后右上角「…」菜单里,“转发给朋友”和“分享到朋友圈”会消失,但「…」按钮本身还在
pages.json 里漏了 enableShareAppMessage 就会灰显
很多人发现右上角按钮是灰色不可点,不是代码问题,而是两层开关没打开:
-
manifest.json中必须勾选「微信分享」(路径:App模块配置 → Share → 微信分享) -
pages.json对应页面的style下必须显式写"enableShareAppMessage": true,否则微信连onShareAppMessage都不会触发 - 即使你删掉了
onShareAppMessage函数,只要enableShareAppMessage: true还在,按钮就亮着(只是点开会提示“暂不支持分享”) - 禁用分享 ≠ 删除函数,而是靠
uni.hideShareMenu()+ 关闭配置双保险
scene=1154(朋友圈进入)要单独 return null
从微信朋友圈点进来的单页模式,顶部仍显示分享按钮,且点击会走 onShareTimeline,不是 onShareAppMessage:
- 必须在页面中定义
onShareTimeline函数,并在里面判断uni.getLaunchOptionsSync().scene === 1154 - 满足条件就直接
return null,否则点击后仍会弹默认提示 - 这个逻辑不能放
onLoad里,因为onShareTimeline是独立触发的生命周期 - 记得加
#ifdef MP-WEIXIN条件编译,避免其他平台报错
安卓“复制链接”浮层拦不住,这是系统级行为
即使菜单项全隐藏了,安卓微信用户长按页面空白处仍可能唤出「复制链接」浮层,短链可跳转——这不是 bug,是微信客户端保留的底层能力:
-
uni.hideShareMenu()对它完全无效 - 没有 JS API 可拦截该行为,
preventDefault或pointer-events: none也无用 - 如果你的场景真需要彻底阻断(如考试类应用),得结合后端校验 + 场景参数透传 + 页面白名单控制,前端纯隐藏做不到
- 别浪费时间试
display: none盖胶囊、或轮询 DOM 移除元素——微信会拦截并恢复
最易被忽略的一点:胶囊按钮的位置和尺寸随机型变化(尤其全面屏+状态栏高度不同),自定义导航栏时若没动态读取 uni.getSystemInfoSync().statusBarHeight,留白或遮挡会非常普遍。别硬写 44px。











