Скрипт предварительной загрузки Electron webPreferences, как и где он работает? - PullRequest
0 голосов
/ 20 декабря 2018

Я читал документацию по электронной безопасности.https://electronjs.org/docs/tutorial/security пытается понять, как я должен писать свой код безопасно.

Насколько я понимаю, я должен использовать webPreferences и скрипт предварительной загрузки для доступа к функциям, которые будут обращаться к файловой системе.

Я хочу иметь кнопку, которая открывает средство выбора файлов.

Я пытался использовать сценарий предварительной загрузки, но, насколько я могу судить, сценарий никогда не загружается и не запускается.Может кто-нибудь объяснить мне, как работает скрипт предварительной загрузки?Где он загружается или где я могу посмотреть в инструментах Chrome Dev, чтобы проверить, загрузился ли он?Когда он запускается, до загрузки страницы или после?Могу ли я по-прежнему ссылаться на функции в сценарии из файла html?

const mainWindow = new BrowserWindow({
{width: 800, height: 600},
  webPreferences: {
    nodeIntegration: false,
    preload: `file://${__dirname}/index.js`
  }
});

mainWindow.loadURL(`file://${__dirname}/index.html`);

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Electron Hello World!</title>
  </head>
  <body>
    <h1>Electron Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chromium <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
    <br/>
    <button id="openFile" onclick="openFile();">Open</button>
    <br />
    <textarea id="editor" style="width: 400px; height: 300px;"></textarea>
  </body>
</html>

index.ts

{
    console.log('preloaded');
const electron = require('electron').remote;
const dialog = electron.dialog;
const fs = require('fs');
function openFile () {
    dialog.showOpenDialog({filters: [{ name: 'text', extensions: ['txt'] }]}, function (fileNames) {
        if (fileNames === undefined) 
        {
            return;
        }
        var fileName = fileNames[0];
        fs.readFile(fileName, 'utf-8', function (err, data) {
            document.getElementById("editor").innerText = data;
        });
    }); 
} 
}

Этот код не 'т работа.Номер версии из index.html не отображается, но вызывает ошибки в консоли.Console.log не запускается, а событие кнопки не работает.

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