Skip to content

E. 窗口管理

<fb-titlebar>

自定义标题栏拖拽区域。双击切换最大化/还原,右键显示系统菜单。

html
<fb-titlebar>
  <span slot="left">foobar2000</span>
  <span slot="right"><fb-window-controls></fb-window-controls></span>
</fb-titlebar>
属性类型默认值说明
maximizedboolean只读反映:窗口是否最大化

CSS Parts: drag-regionSlots: left, right(不参与拖拽)

事件:

js
el.addEventListener('fb-titlebar-dblclick', e => {
  console.log('双击标题栏');
});

<fb-window-controls>

窗口控制按钮(最小化/最大化/关闭)。maximized 时 maximize-button 和 restore-icon 互斥显示。

html
<fb-window-controls>
  <span slot="minimize-icon">—</span>
  <span slot="maximize-icon">□</span>
  <span slot="restore-icon">❐</span>
  <span slot="close-icon">✕</span>
</fb-window-controls>
属性类型默认值说明
maximizedboolean只读反映:窗口是否最大化

CSS Parts: controls, minimize-button, maximize-button, restore-icon, close-buttonSlots: minimize-icon(默认 —), maximize-icon(默认 □), restore-icon(默认 ❐), close-icon(默认 ✕)

事件:

js
el.addEventListener('fb-window-minimize', e => { /* 最小化 */ });
el.addEventListener('fb-window-maximize', e => { /* 最大化/还原 */ });
el.addEventListener('fb-window-close', e => { /* 关闭 */ });

<fb-popup-panel>

弹出面板,disconnectedCallback 自动关闭弹窗。

html
<fb-popup-panel url="settings.html" width="600" height="400" popup-title="设置">
  ⚙️ 打开设置
</fb-popup-panel>
属性类型默认值说明
urlstring弹窗页面 URL
widthstring'400'弹窗宽度
heightstring'300'弹窗高度
popup-titlestring弹窗标题
resizablebooleantrue允许调整大小
always-on-topbooleanfalse置顶
show-in-taskbarbooleanfalse在任务栏显示
framebooleantrue显示窗口边框
transparentbooleanfalse背景透明
before-closeboolean设置后关闭前弹出确认
openboolean只读反映:弹窗是否打开
window-idstring只读反映:弹窗窗口 ID

Slots: 默认 slot(触发弹窗的按钮内容)

JS API:

js
const windowId = await el.open();  // 打开弹窗,返回 windowId
el.close();                         // 关闭弹窗
console.log(el.windowId);           // 当前窗口 ID

事件:

js
el.addEventListener('fb-popup-open', e => {
  console.log('弹窗打开:', e.detail.windowId);
});
el.addEventListener('fb-popup-close', e => {
  console.log('弹窗关闭:', e.detail.windowId);
});
el.addEventListener('fb-popup-message', e => {
  console.log('弹窗消息:', e.detail);
});