У меня есть два электронных окна.Первый содержит список проектов, и если вы нажмете на него, откроется вторая панель.На второй панели отображается предварительный просмотр локального файла HTML и обновляется, если локальные файлы этой веб-страницы изменяются.У меня также есть возможность щелкнуть правой кнопкой мыши-> проверить элемент в этой второй панели.Это прекрасно работает как в 1.7.9, так и в первый раз, когда вы открываете вторую панель в 3.0.0.
Ожидаемое поведение Я ожидаю, что щелчок правой кнопкой мыши -> элемент inspect будет работать для последующихобновляет вторую панель.
Фактическое поведение Как только обновляется вторая панель, вызов remote.getCurrentWindow().inspectElement(x,y)
вызывает ошибку Attempting to call a function in a renderer window that has been closed or released
.
код для второй панели
preview.js
const {remote} = require('electron')
const {Menu, MenuItem, BrowserWindow} = remote
process.once('loaded', () => {
// set up right click menu
const menu = new Menu()
const menuItem = new MenuItem({
label: 'Inspect Element',
click: () => {
remote.getCurrentWindow().inspectElement(rightClickPosition.x, rightClickPosition.y)
}
})
menu.append(menuItem)
window.addEventListener('contextmenu', (e) => {
e.preventDefault()
rightClickPosition = {x: e.x, y: e.y}
menu.popup(remote.getCurrentWindow())
}, false)
})
Код, запускающий вторую панель
viewDirectory: function(dir,dirId) {
renderer.changeListener(dirId)
if(renderer.selected) document.getElementById('directory').querySelector('.selected').classList.remove('selected')
renderer.selected = dirId
document.getElementById(dirId).classList.add('selected')
if (!renderer.preview){
renderer.preview = new BrowserWindow({
title: 'Bowtie',
width: 1200,
height: 809,
webPreferences: {experimentalFeatures: true, preload: path.join(__dirname, "preview.js")}})
renderer.preview.setMenu(null)
renderer.preview.on('closed', () => {
renderer.preview = null
renderer.resetSelected()
})
renderer.preview.webContents.on('did-finish-load',() => {
if(renderer.preview.getTitle()=='Bowtie'){
renderer.preview.setTitle(dir)
}
})
}
renderer.preview.loadURL("http://localhost:8900/" + dir)
},
Am Iделать что-то не так здесь?Это прекрасно работает под 1.7.9.Почему я теряю ссылку на текущее окно в preview.js?