sessions.restore()

恢復已關閉的標籤頁或視窗。恢復不僅僅是重新開啟標籤頁或視窗:它還會恢復標籤頁的瀏覽歷史,以便前進/後退按鈕能夠正常工作。恢復一個視窗將恢復該視窗關閉時所包含的所有標籤頁。

這是一個非同步函式,返回一個 Promise

語法

js
let restoringSession = browser.sessions.restore(
  sessionId             // string
)

引數

sessionId

string。一個字串,包含要恢復的視窗或標籤頁的會話 ID。這可以在 TabWindow 物件的 sessionId 屬性中找到,該物件來自 sessions.getRecentlyClosed() 返回的 Session

返回值

一個 Promise。此 Promise 將以一個 Session 物件兌現,該物件代表已恢復的會話。

示例

這會恢復最近關閉的單個會話,無論是視窗還是標籤頁

js
function restoreMostRecent(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);
}

browser.browserAction.onClicked.addListener(() => {
  let gettingSessions = browser.sessions.getRecentlyClosed({
    maxResults: 1,
  });
  gettingSessions.then(restoreMostRecent, onError);
});

瀏覽器相容性

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

已知問題

Bug 1538119 - "恢復上次會話" 後 browser.sessions.getRecentlyClosed() 中出現重複的 sessionId