object my.getmenubuttonboundingclientrect()
基础库 或更高版本; 且 支付宝客户端 10.1.90 或更高版本; 若版本较低,建议采取 兼容处理 。
支小宝客户端 支持
安诊儿客户端 支持
小程序开发者工具: 支持。由于历史原因,需要使用 ide 2.7.0 以上版本才可正常调用。
主体: 企业支付宝小程序 、 个人支付宝小程序
获取菜单按钮(右上角胶囊按钮)的布局位置信息。
object
菜单按钮的布局位置信息 查看示例
属性 | 类型 | 描述 |
---|---|---|
width | number | 胶囊按钮宽度,单位 px。 |
height | number | 胶囊按钮高度,单位 px。 |
top | number | 胶囊按钮上边界坐标,单位 px,以屏幕左上角为原点。 |
bottom | number | 胶囊按钮下边界坐标,单位 px,以屏幕左上角为原点。 |
left | number | 胶囊按钮左边界坐标,单位 px,以屏幕左上角为原点。 |
right | number | 胶囊按钮右边界坐标,单位 px,以屏幕左上角为原点。 |
optionmenuwidth | number | 自定义按钮宽度,单位 px。 |
optionmenuheight | number | 自定义按钮高度,单位 px。 |
optionmenutop | number | 自定义按钮上边界坐标,单位 px,以屏幕左上角为原点。 |
optionmenubuttom | number | 自定义按钮下边界坐标,单位 px,以屏幕左上角为原点。 |
optionmenuleft | number | 自定义按钮左边界坐标,单位 px,以屏幕左上角为原点。 |
optionmenuright | number | 自定义按钮右边界坐标,单位 px,以屏幕左上角为原点。 |
function compareversion(v1, v2) {
var s1 = v1.split(".");
var s2 = v2.split(".");
var len = math.max(s1.length, s2.length);
for (let i = 0; i < len; i) {
var num1 = parseint(s1[i] || "0");
var num2 = parseint(s2[i] || "0");
if (num1 > num2) {
return 1;
} else if (num1 < num2) {
return -1;
}
}
return 0;
}
const clientversion = my.env.clientversion || my.getsysteminfo().clientversion;
const sdkversion = my.sdkversion;
if(compareversion(sdkversion, '1.25.4') >= 0 && compareversion(clientversion,'10.1.90') >= 0) {
const res = my.getmenubuttonboundingclientrect();
} else {
console.log('当前环境不支持调用my.getmenubuttonboundingclientrect');
}
由于历史原因,请使用『版本号检测』的方式来判断可用性。详细可参考文档:兼容。
{
"height": 32,
"width": 87,
"left": 281,
"right": 368,
"top": 56,
"bottom": 88,
"optionmenubottom": 87,
"optionmenuheight": 30,
"optionmenuleft": 249,
"optionmenuright": 279,
"optionmenustatus": "unfavorite",
"optionmenutop": 57,
"optionmenuwidth": 30,
"success": true
}
q:收藏按钮的位置如何获取?
调用 my.getmenubuttonboundingclientrect,拿到 optionmenuwidth、optionmenutop 等相关信息。
q:为什么获取胶囊位置数据不准确,甚至是负数?
- ide 3.5.1 以下的版本偶现 top、left 等值为负数的情况,请安装最新版本 ide。
- ios 端偶现 top、left 等值为 0 的情况,可通过延时调用来规避。
q:调用此接口为什么报错 'not titlebar'?
- 可能是调用此接口时,导航栏胶囊按钮还未渲染完成。可延时一定时间,再调用此接口。
q:如何获取是否收藏?
可通过 my.iscollected() 获取是否收藏