feat: Restore webContents navigation history and page state (#45583)
* feat: Working navigationHistory.restore with just title/url Co-authored-by: Felix Rieseberg <fr@makenotion.com> * feat: Restore page state, too Co-authored-by: Felix Rieseberg <fr@makenotion.com> * chore: Docs, lint, tests Co-authored-by: Felix Rieseberg <fr@makenotion.com> * Implement feedback Co-authored-by: Felix Rieseberg <fr@makenotion.com> * More magic Co-authored-by: Felix Rieseberg <fr@makenotion.com> * Make _awaitNextLoad truly private Co-authored-by: Felix Rieseberg <fr@makenotion.com> * Implement API group feedback Co-authored-by: Felix Rieseberg <fr@makenotion.com> * One more round of feedback Co-authored-by: Felix Rieseberg <fr@makenotion.com> --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Felix Rieseberg <fr@makenotion.com>
This commit is contained in:
parent
b2b59a6c0b
commit
9a7f27d845
8 changed files with 259 additions and 10 deletions
|
@ -69,8 +69,25 @@ if (navigationHistory.canGoToOffset(2)) {
|
|||
}
|
||||
```
|
||||
|
||||
## Restoring history
|
||||
|
||||
A common flow is that you want to restore the history of a webContents - for instance to implement an "undo close tab" feature. To do so, you can call `navigationHistory.restore({ index, entries })`. This will restore the webContent's navigation history and the webContents location in said history, meaning that `goBack()` and `goForward()` navigate you through the stack as expected.
|
||||
|
||||
```js @ts-type={navigationHistory:Electron.NavigationHistory}
|
||||
|
||||
const firstWindow = new BrowserWindow()
|
||||
|
||||
// Later, you want a second window to have the same history and navigation position
|
||||
async function restore () {
|
||||
const entries = firstWindow.webContents.navigationHistory.getAllEntries()
|
||||
const index = firstWindow.webContents.navigationHistory.getActiveIndex()
|
||||
|
||||
const secondWindow = new BrowserWindow()
|
||||
await secondWindow.webContents.navigationHistory.restore({ index, entries })
|
||||
}
|
||||
```
|
||||
|
||||
Here's a full example that you can open with Electron Fiddle:
|
||||
|
||||
```fiddle docs/fiddles/features/navigation-history
|
||||
|
||||
```
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue