Обновление до версии 3.0.0 нарушает мою способность проверять элементы в BrowserWindow - PullRequest
0 голосов
/ 04 октября 2018

У меня есть два электронных окна.Первый содержит список проектов, и если вы нажмете на него, откроется вторая панель.На второй панели отображается предварительный просмотр локального файла 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...