如何在不等待页面重新加载的情况下切换BrowserView的网站?

问题描述 投票:1回答:2

假设我在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');

当我点击UI按钮(另一个“标签”,如在浏览器中)时,我想将URL更改为另一个网站(例如https://www.gmail.com)。

当我点击回到第一个“标签”时,我希望BrowserView恢复以前的网站(Twitter)及其所有浏览历史记录。显然,使用:

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

再次不是一个好的解决方案,因为会有一个页面加载等待时间。

相反,我想立即恢复BrowserView的先前状态(即<50 ms),就像点击Chrome或Firefox等浏览器中的标签一样:如果选项卡中的网站之前已经加载过,点击在选项卡上只重新显示它。

问题:如何存储然后立即恢复BrowserView状态?即,无需重新加载页面?

enter image description here

javascript google-chrome browser electron
2个回答
0
投票

解决方案是拥有多个BrowserView并在它们之间切换。这样每个人都会记住它的历史。

var browserViews = [];
var activeBW;

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

从第一个开始:

addAndSwitchToTab();

当用户打开新选项卡时,只需再次调用该功能。


0
投票

点击按钮试试这个:

 onClick(){
        const shell = require('electron').shell;
        event.preventDefault();
        shell.openExternal('https://www.twitter.com');
      }
© www.soinside.com 2019 - 2024. All rights reserved.