@@ -6,6 +6,16 @@ import props from './props';
66const { prefix } = config ;
77const name = `${ prefix } -navbar` ;
88
9+ // 这些场景下 wx.getMenuButtonBoundingClientRect 不可用或取值不可靠,需跳过调用
10+ // 1433(半屏小程序)、1434(半屏小程序-从聊天素材打开)、1177(视频号直播间)、1175(视频号profile页)
11+ const SKIP_MENU_RECT_SCENES = [ 1433 , 1434 , 1177 , 1175 ] ;
12+
13+ /** 判断当前是否处于特殊场景(半屏、视频号等) */
14+ const checkSpecialScene = ( ) : boolean => {
15+ const { scene } = wx . getLaunchOptionsSync ( ) ;
16+ return SKIP_MENU_RECT_SCENES . includes ( scene ) ;
17+ } ;
18+
919@wxComponent ( )
1020export default class Navbar extends SuperComponent {
1121 externalClasses = [
@@ -66,12 +76,19 @@ export default class Navbar extends SuperComponent {
6676 showTitle : '' ,
6777 hideLeft : false , // 隐藏左侧内容
6878 hideCenter : false , // 隐藏中部内容
79+ isSpecialScene : false , // 是否处于特殊场景
6980 _menuRect : null , // 胶囊按钮节点信息
7081 _leftRect : null , // 左侧节点信息
7182 _boxStyle : { } , // 记录样式
7283 } ;
7384
7485 attached ( ) {
86+ const isSpecialScene = checkSpecialScene ( ) ;
87+
88+ if ( isSpecialScene ) {
89+ this . setData ( { isSpecialScene } ) ;
90+ }
91+
7592 this . initStyle ( ) ;
7693 this . getLeftRect ( ) ;
7794 this . onMenuButtonBoundingClientRectWeightChange ( ) ;
@@ -133,7 +150,8 @@ export default class Navbar extends SuperComponent {
133150 } ,
134151
135152 getMenuRect ( ) {
136- // 场景值为1177(视频号直播间)和1175 (视频号profile页)时,小程序禁用了 wx.getMenuButtonBoundingClientRect
153+ if ( this . data . isSpecialScene ) return ;
154+
137155 if ( wx . getMenuButtonBoundingClientRect ) {
138156 const rect = wx . getMenuButtonBoundingClientRect ( ) ;
139157 this . setData ( {
0 commit comments