此介面用於設定標題列右邊的按鈕屬性(僅負責設定),該按鈕的顯示需要額外調用 showOptionMenu
。
由於蘋果的 ATS 限制,icon URL 必須為 HTTPS 連結或 Base64,而 HTTP 連結會被忽略。
setOptionMenu 介面的使用方法
AlipayJSBridge.call('setOptionMenu', {
title : '按鈕', // 與 icon、icontype 三選一
redDot : '-1', // -1 表示不顯示,0 表示顯示紅點,1-99 表示在紅點上顯示的數字
color : '#ff00ff00', // 必須以 # 開始 ARGB 顏色值
});
程式碼範例
設定各種類型的右側按鈕:
<h1>點擊以下按鈕看不同效果</h1>
<a href="javascript:void(0)" class="btn button">單按鈕</a>
<a href="javascript:void(0)" class="btn icon">單表徵圖</a>
<a href="javascript:void(0)" class="btn menu">多菜單(9.9.3)</a>
<a href="javascript:void(0)" class="btn reset">重設</a>
<a href="javascript:void(0)" class="btn hide">隱藏</a>
<a href="javascript:void(0)" class="btn show">顯示</a>
<script>
function ready(callback) {
// 如果 jsbridge 已經注入則直接調用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果沒有注入則監聽注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function(e) {
document.querySelector('.button').addEventListener('click', function() {
AlipayJSBridge.call('setOptionMenu', {
title : '按鈕',
redDot : '5', // -1 表示不顯示,0 表示顯示紅點,1-99 表示在紅點上顯示的數字
color : '#ff00ff00', // 必須以#開始 ARGB 顏色值
});
AlipayJSBridge.call('showOptionMenu');
});
document.querySelector('.icon').addEventListener('click', function() {
AlipayJSBridge.call('setOptionMenu', {
icon : 'http://pic.alipayobjects.com/e/201212/1ntOVeWwtg.png',
redDot : '-1', // -1 表示不顯示,0 表示顯示紅點,1-99 表示在紅點上顯示的數字
});
AlipayJSBridge.call('showOptionMenu');
});
document.querySelector('.menu').addEventListener('click', function() {
AlipayJSBridge.call('setOptionMenu', {
// 顯示時的順序為從右至左
menus: [{
icontype: 'scan',
redDot: '-1', // -1 表示不顯示,0 表示顯示紅點,1-99 表示在紅點上顯示的數字
}, {
icontype: 'user',
redDot: '-1', // -1 表示不顯示,0 表示顯示紅點,1-99 表示在紅點上顯示的數字
}],
override: true // 在需要設定多個 option 的情況下,是否保留預設的 optionMenu
});
// 必須強制調用一次以重新整理介面
AlipayJSBridge.call('showOptionMenu');
});
document.querySelector('.reset').addEventListener('click', function() {
AlipayJSBridge.call('setOptionMenu', {
reset: true,
});
AlipayJSBridge.call('showOptionMenu');
});
document.querySelector('.show').addEventListener('click', function() {
AlipayJSBridge.call('showOptionMenu');
});
document.querySelector('.hide').addEventListener('click', function() {
AlipayJSBridge.call('hideOptionMenu');
});
document.addEventListener('optionMenu', function(e) {
alert(JSON.stringify(e.data));
}, false);
});
</script>
API 說明
設定 setOptionMenu
後,如果效果不對,請調用一次 showOptionMenu
。
reset、title、icontype、icon 這四個屬性有一個即可,屬性的優先順序為:reset > title > icontype > icon。
AlipayJSBridge.call('setTitle',{
title, icon, redDot, reset, color, override, menus, icontype
})
入參
屬性 | 類型 | 描述 | 必填 | 預設值 |
title | string | 右按鈕文字。 | Y | “” |
icon | string | 右按鈕表徵圖 URL,base64(since 9.0)。 8.3 及以前版本:iOS 40x40(周邊不留白), Android 50x50(四邊各透明留白 5px)。 8.4 及以後版本:兩個平台統一使用 40x40(周邊不留白)。 | Y | “” |
redDot | string | 紅點數值。 | N | “” |
reset | bool | 重設為系統預設,當 | Y | false |
color | string | 文字顏色值。 | N | “#FFFFFFFF” |
override | bool | 在需要設定多個 option 的情況下,是否保留預設的 optionMenu。 | N | false |
menus | array | 設定多個按鈕。 | N | [ ] |
preventDefault | bool | 是否阻止預設的分享功能(預設是彈分享框)preventDefault=true 時,會阻止預設的分享。 | N | [ ] |
icontype | string | 根據圖片類型載入容器預置圖片,可選擇其中之一:icontype、title、icon。 重要 只支援單個 optionMenu 變色。 具體類型包含 user(賬戶)、filter(篩選器)、search(尋找)、add(添加)、settings(設定)、scan(掃一掃)、info(資訊)、help(協助)、locate(定位)、more(更多)、mail(郵箱 10.0.8 及以上)。 | N | “” |
contentDesc | string | 設定盲人模式來閱讀文案。 | N | “” |