Как переключить сайт на BrowserView, не дожидаясь перезагрузки страницы? - PullRequest
1 голос
/ 07 марта 2019

Допустим, у меня есть BrowserView внутри BrowserWindow:

browserWindow = new BrowserWindow({ width: 1200, height: 600 });
browserWindow.webContents.loadURL('file://' + __dirname + '/top_toolbar.html');

let browserView1 = new BrowserView({ webPreferences: { nodeIntegration: false }});
browserWindow.setBrowserView(browserView1);
browserView1.setBounds({ x: 0, y: 50, width: 600, height: 600 }); // y=50 to keep top toolbar
browserView1.webContents.loadURL('https://www.twitter.com');

Когда я нажимаю кнопку пользовательского интерфейса (еще одну «вкладку», как в браузере), я бы хотелизменить URL-адрес на другой веб-сайт (например, https://www.gmail.com).

. Когда я вернусь к первой «вкладке», мне бы хотелось, чтобы BrowserView восстанавливал предыдущий веб-сайт (Twitter) и все егоистория посещений. Очевидно, что использование:

browserView1.webContents.loadURL('https://www.twitter.com');

снова не будет хорошим решением, поскольку будет время ожидания загрузки страницы.

Вместо этого я хотел бы восстановить предыдущее состояниеBrowserView мгновенно (т. е. <50 мс), точно так же, как при нажатии на вкладку в браузере, таком как Chrome или Firefox: если веб-сайт на вкладке уже был загружен, нажмите наВкладка просто повторно отображает его. </p>

Вопрос: как сохранить и затем мгновенно восстановить состояние BrowserView? , т. е. без перезагрузки страницы?

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Решение состоит в том, чтобы иметь несколько BrowserView и переключаться между ними. Таким образом, каждый будет помнить свою историю.

var browserViews = [];
var activeBW;

function addAndSwitchToTab() {
  activeBW = browserViews.length;
  browserViews[activeBW] = new BrowserView();
  browserWindow.setBrowserView(activeBW);
}

Начните с первого:

addAndSwitchToTab();

Когда пользователь открывает новую вкладку, просто вызовите функцию еще раз.

0 голосов
/ 07 марта 2019

Попробуйте это для нажатия кнопки:

 onClick(){
        const shell = require('electron').shell;
        event.preventDefault();
        shell.openExternal('https://www.twitter.com');
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...