-
Notifications
You must be signed in to change notification settings - Fork 17k
Closed
Labels
23-x-ybug 🪲component/BrowserViewhas-repro-gistIssue can be reproduced with code at https://gist.github.com/Issue can be reproduced with code at https://gist.github.com/platform/windowsstatus/confirmedA maintainer reproduced the bug or agreed with the featureA maintainer reproduced the bug or agreed with the feature
Description
Preflight Checklist
- I have read the Contributing Guidelines for this project.
- I agree to follow the Code of Conduct that this project adheres to.
- I have searched the issue tracker for a bug report that matches the one I want to file, without success.
Electron Version
23.1.0
What operating system are you using?
Windows
Operating System Version
Windows 11 22H2 22621.1265
What arch are you using?
x64
Last Known Working Electron version
21.4.2
Expected Behavior
Electron will not exit and browserView will close.
Actual Behavior
Electron exited with code 3221225477.
Testcase Gist URL
No response
Additional Information
I publish fiddle to github failed. /(ㄒoㄒ)/~~
main.js
// Modules to control application life and create native browser window
const { app, BrowserWindow, BrowserView, ipcMain, dialog } = require('electron')
const path = require('path')
function createWindow() {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
const mainView = new BrowserView({
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
}
})
mainView.webContents.loadURL('https://boardmix.cn/app/')
mainWindow.setBrowserView(mainView);
const windowBounds = mainWindow.getContentBounds();
const viewWidth = windowBounds.width - 2;
const viewHeight = windowBounds.height - 200 - 1;
mainView.setBounds({ x: 1, y: 200, width: viewWidth, height: viewHeight });
ipcMain.on('close', () => {
if (!mainView.webContents || mainView.webContents.isDestroyed()) {
dialog.showMessageBox({message: 'webContents is destroyed'})
} else {
mainView.webContents.destroy();
}
})
// Open the DevTools.
// mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
createWindow()
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
renderer.js
document.querySelector('h1').addEventListener('click', () => {
desktopManagerApi.close();
})
preload.js
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('desktopManagerApi', {
close() {
ipcRenderer.send('close')
}
});
But, if i call webContents.close(), the destroyed event not be emitted. webContents.isDestroyed() is false.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
23-x-ybug 🪲component/BrowserViewhas-repro-gistIssue can be reproduced with code at https://gist.github.com/Issue can be reproduced with code at https://gist.github.com/platform/windowsstatus/confirmedA maintainer reproduced the bug or agreed with the featureA maintainer reproduced the bug or agreed with the feature