доступ к элементу html с использованием id из тега webview в элементе electronic.js [duplicate]

Для тех, кто не хочет использовать внешние почтовые программы и хочет отправлять почту () на выделенный Linux-сервер.

Способ, как php-сообщения, описаны в php.ini в разделе [mail function] , Параметр sendmail-path описывает, как вызывается sendmail. Значение по умолчанию - sendmail -t -i, поэтому, если вы заработаете sendmail -t -i < message.txt в консоли linux, вы сделаете это. Вы также можете добавить mail.log для отладки и убедиться, что почта действительно вызвана.

Различные MTA могут реализовать sendmail, они просто делают символическую ссылку на свои двоичные файлы на это имя. Например, в debian default используется postfix. Настройте свой MTA для отправки почты и протестируйте ее с консоли с помощью sendmail -v -t -i < message.txt. Файл message.txt должен содержать все заголовки сообщения и тело, адресаты назначения для конверта будут взяты из заголовка To:. Пример:

From: myapp@example.com
To: mymail@example.com
Subject: Test mail via sendmail.

Text body.

Я предпочитаю использовать ssmtp как MTA, потому что он прост и не требует запуска демона с открытыми портами. ssmtp подходит только для отправки почты с локального хоста, он также может отправлять аутентифицированную электронную почту через вашу учетную запись в общедоступной почтовой службе. Установите ssmtp и отредактируйте конфигурацию /etc/ssmtp/ssmtp.conf. Чтобы иметь возможность также получать локальную системную почту для учетных записей unix (например, оповещения для root из заданий cron), настройте файл /etc/ssmtp/revaliases.

Вот моя конфигурация для моей учетной записи в почте Yandex:

root=mymail@example.com
mailhub=smtp.yandex.ru:465
FromLineOverride=YES
UseTLS=YES
AuthUser=abcde@yandex.ru
AuthPass=password
43
задан Joakim Johansson 3 April 2016 в 16:19
поделиться

3 ответа

DOM может иметь доступ к not в основном процессе, только в рендерере, к которому он принадлежит.

Имеется модуль ipc, доступный на main process , а также процесс визуализации , который позволяет осуществлять связь между этими двумя сообщениями sync / async.

Вы также можете использовать remote ] для вызова основного API процесса из средства визуализации, но нет ничего, что позволило бы вам сделать это по-другому.

Если вам нужно что-то запустить в основном процессе в ответ на действие пользователя, используйте модуль ipc для вызова функции, затем вы можете вернуть результат рендереру, также используя ipc.

Код обновлен, чтобы отразить фактический (v0.37.8) API, так как @Wolfgang, предложенный в комментарии, см. В истории изменений для устаревших API, если вы застряли в старой версии Electron.

Пример скрипта в index.html:

var ipc = require('electron').ipcRenderer;
var authButton = document.getElementById('auth-button');
authButton.addEventListener('click', function(){
    ipc.once('actionReply', function(event, response){
        processResponse(response);
    })
    ipc.send('invokeAction', 'someData');
});

И в основном процессе:

var ipc = require('electron').ipcMain;

ipc.on('invokeAction', function(event, data){
    var result = processData(data);
    event.sender.send('actionReply', result);
});
58
ответ дан ROAL 21 August 2018 в 17:21
поделиться
  • 1
    Когда я использую require в index.html, появляется следующая ошибка. `Uncaught ReferenceError: require is not defined любая идея почему? – ant_1618 25 September 2015 в 12:32
  • 2
    Кажется, вы забыли включить ошибку. В настоящее время у меня нет доступа к электрону, но я думаю, что require() должен быть доступен в процессе визуализации. Изменить: ОК, теперь он здесь. – ROAL 25 September 2015 в 12:36
  • 3
    @ ant_1618 Какую версию Electron вы используете? Кроме того, на какой ОС? – ROAL 25 September 2015 в 12:40
  • 4
    с использованием io.js v2.3.1 и Electron 0.29.1. На Linux 15.04 – ant_1618 25 September 2015 в 13:03
  • 5
    @ROAL: Да, можно использовать .once(). IPC Electron является стандартным Node.js EventEmitter . Кроме того, require('ipc') был обесценен, теперь require('electron').ipcMain и require('electron').ipcRenderer. – Wolfgang 5 May 2016 в 19:20

Вы можете использовать webContents.executeJavaScript (код [, userGesture, callback]) API для выполнения кода JavaScript.

например:

mainWindow.loadUrl('file://' + __dirname + '/index.html');
mainWindow.webContents.on('did-finish-load', ()=>{
    let code = `var authButton = document.getElementById("auth-button");
            authButton.addEventListener("click",function(){alert("clicked!");});`;
    mainWindow.webContents.executeJavaScript(code);
});
14
ответ дан cuixiping 21 August 2018 в 17:21
поделиться

Как указано в в этом учебнике :

В Electron у нас есть несколько способов связи между основными процессами и процессами рендеринга, такими как ipcRenderer и ipcMain модули для отправка сообщений и удаленный модуль для связи в стиле RPC.

Итак, вы можете следовать примеру в https://github.com/electron/electron-api-demos . У вас должен быть файл js для каждого html. require

Код в renderer.js :

const ipc = require('electron').ipcRenderer

const asyncMsgBtn = document.getElementById('async-msg')

asyncMsgBtn.addEventListener('click', function () {
  ipc.send('asynchronous-message', 'ping')
})

ipc.on('asynchronous-reply', function (event, arg) {
  const message = `Asynchronous message reply: ${arg}`
  document.getElementById('async-reply').innerHTML = message
})

Код в ipc.html :

<script type="text/javascript">
  require('./renderer-process/communication/sync-msg')
  require('./renderer-process/communication/async-msg')
  require('./renderer-process/communication/invisible-msg')
</script>
5
ответ дан Raffi 21 August 2018 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: