59 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | const { app, BrowserWindow, BrowserView, ipcMain } = require('electron') | ||
|  | const path = require('path') | ||
|  | 
 | ||
|  | function createWindow () { | ||
|  |   const mainWindow = new BrowserWindow({ | ||
|  |     width: 1000, | ||
|  |     height: 800, | ||
|  |     webPreferences: { | ||
|  |       preload: path.join(__dirname, 'preload.js'), | ||
|  |       nodeIntegration: false, | ||
|  |       contextIsolation: true | ||
|  |     } | ||
|  |   }) | ||
|  | 
 | ||
|  |   mainWindow.loadFile('index.html') | ||
|  | 
 | ||
|  |   const view = new BrowserView() | ||
|  |   mainWindow.setBrowserView(view) | ||
|  |   view.setBounds({ x: 0, y: 100, width: 1000, height: 800 }) | ||
|  |   view.setAutoResize({ width: true, height: true }) | ||
|  | 
 | ||
|  |   const navigationHistory = view.webContents.navigationHistory | ||
|  |   ipcMain.handle('nav:back', () => | ||
|  |     navigationHistory.goBack() | ||
|  |   ) | ||
|  | 
 | ||
|  |   ipcMain.handle('nav:forward', () => { | ||
|  |     navigationHistory.goForward() | ||
|  |   }) | ||
|  | 
 | ||
|  |   ipcMain.handle('nav:canGoBack', () => navigationHistory.canGoBack()) | ||
|  |   ipcMain.handle('nav:canGoForward', () => navigationHistory.canGoForward()) | ||
|  |   ipcMain.handle('nav:loadURL', (_, url) => | ||
|  |     view.webContents.loadURL(url) | ||
|  |   ) | ||
|  |   ipcMain.handle('nav:getCurrentURL', () => view.webContents.getURL()) | ||
|  |   ipcMain.handle('nav:getHistory', () => { | ||
|  |     return navigationHistory.getAllEntries() | ||
|  |   }) | ||
|  | 
 | ||
|  |   view.webContents.on('did-navigate', () => { | ||
|  |     mainWindow.webContents.send('nav:updated') | ||
|  |   }) | ||
|  | 
 | ||
|  |   view.webContents.on('did-navigate-in-page', () => { | ||
|  |     mainWindow.webContents.send('nav:updated') | ||
|  |   }) | ||
|  | } | ||
|  | 
 | ||
|  | app.whenReady().then(createWindow) | ||
|  | 
 | ||
|  | app.on('window-all-closed', () => { | ||
|  |   if (process.platform !== 'darwin') app.quit() | ||
|  | }) | ||
|  | 
 | ||
|  | app.on('activate', () => { | ||
|  |   if (BrowserWindow.getAllWindows().length === 0) createWindow() | ||
|  | }) |