Как создать модальное окно и загрузить HTML из процесса рендеринга?

это моя текущая структура проекта:

main.js
index.html
download.html
src/index.js
src/style.css

main.js создаст BrowserWindow и загрузит index.html, который загрузит index.js и style.css.

Я хотел бы создать новое модальное окно и загрузить download.html при нажатии кнопки в index.html.

вот коды от моего index.js:

btn.onclick = function() {
  let win = new remote.BrowserWindow({
    parent: remote.getCurrentWindow(),
    modal: true
  })
  win.loadURL(`file://${__dirname}/download.html`)
}

но он загружает file://download.html, разве __dirname не существует в процессе рендеринга?


person wong2    schedule 20.03.2017    source источник
comment
что происходит с: console.log( __dirname);?   -  person spring    schedule 20.03.2017
comment
@NoGrabbing выводит /   -  person wong2    schedule 20.03.2017
comment
Если @NoGrabbing ответил на ваш вопрос, обязательно отметьте его как ответ. Это решение отлично сработало для меня.   -  person Slbox    schedule 08.06.2018


Ответы (2)


Только что протестировал этот код (ниже), и он работает. Структура каталога:

main.js
приложение (каталог)
--- index.html
--- app.js (где существует приведенный ниже код)
--- modal.html

Как вы получаете доступ к remote?


"use strict";

const { remote } = require('electron');


function openModal() {
  let win = new remote.BrowserWindow({
    parent: remote.getCurrentWindow(),
    modal: true
  })

  var theUrl = 'file://' + __dirname + '/modal.html'
  console.log('url', theUrl);

  win.loadURL(theUrl);
}
person spring    schedule 20.03.2017
comment
Я получаю доступ к remote так же, как и вы - person wong2; 20.03.2017
comment
@wong2 — для чего нужны $ и фигурные скобки? ${__dirname} — это jquery + реакция? - person spring; 20.03.2017
comment
это интерполяция строк функция ES6 - person wong2; 21.03.2017
comment
Так много других методов делают это таким сложным. Святое дерьмо это легко. Спасибо. - person Slbox; 08.06.2018
comment
Как они могут общаться через ipcRenderer? Я не могу заставить сообщения работать. - person Ivan; 16.09.2018
comment
какова цель модального в электроне? похоже, что модальное окно было загружено в приложение нормально, как если бы приложение загрузило index.html? - person oldboy; 04.10.2019
comment
modal в Electron — это отдельное окно приложения, а не div, как в HTML. - person spring; 04.10.2019

Использование __dirname даст каталог текущего файла. В основном процессе это будет в соответствии с файловой системой. В процессе рендеринга он будет находиться в контексте браузера и основываться на доступном uri.

Вероятно, вы захотите использовать app.getAppPath или app.getPath(name) вместо этого.

person Steve Buzonas    schedule 15.10.2017