假设我在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
状态?即,无需重新加载页面?
解决方案是拥有多个BrowserView并在它们之间切换。这样每个人都会记住它的历史。
var browserViews = [];
var activeBW;
function addAndSwitchToTab() {
activeBW = browserViews.length;
browserViews[activeBW] = new BrowserView();
browserWindow.setBrowserView(activeBW);
}
从第一个开始:
addAndSwitchToTab();
当用户打开新选项卡时,只需再次调用该功能。
点击按钮试试这个:
onClick(){
const shell = require('electron').shell;
event.preventDefault();
shell.openExternal('https://www.twitter.com');
}