sessions.onChanged

每当关闭的标签页或窗口列表发生更改时触发。

语法

js
browser.sessions.onChanged.addListener(listener)
browser.sessions.onChanged.removeListener(listener)
browser.sessions.onChanged.hasListener(listener)

事件具有三个函数

addListener(listener)

向此事件添加侦听器。

removeListener(listener)

停止侦听此事件。listener 参数是要移除的侦听器。

hasListener(listener)

检查 listener 是否为此事件注册。如果正在侦听,则返回 true,否则返回 false

addListener 语法

参数

listener

当此事件发生时调用的函数。它不带任何参数。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

这个非常烦人的扩展会侦听 onChanged,然后立即恢复最近关闭的会话,从而导致无法关闭窗口或标签页

js
function restoreSession(sessionInfos) {
  if (!sessionInfos.length) {
    console.log("No sessions found");
    return;
  }
  let sessionInfo = sessionInfos[0];
  if (sessionInfo.tab) {
    browser.sessions.restore(sessionInfo.tab.sessionId);
  } else {
    browser.sessions.restore(sessionInfo.window.sessionId);
  }
}

function onError(error) {
  console.log(error);
}

function restoreMostRecent() {
  let gettingSessions = browser.sessions.getRecentlyClosed({
    maxResults: 1,
  });
  gettingSessions.then(restoreSession, onError);
}

browser.sessions.onChanged.addListener(restoreMostRecent);

注意: 此 API 基于 Chromium 的 chrome.sessions API。