Я пытаюсь сделать некоторую автоматизацию с моим электронным приложением в качестве доказательства концепции замены устаревшего приложения для моей компании.Я понимаю, что мы не можем реально взаимодействовать с DOM из главного окна, поэтому я пытаюсь посмотреть, какие подходы я могу использовать здесь.
Я создал файл preload.js
, который вводится в окно,Этот файл предварительной загрузки по существу использует ipcRenderer
для прослушивания, а затем при запуске отправляет данные обратно родителю.
Это отлично работает, я могу отправить данные из main.js в средство визуализации процесса, и оно возвращает мне данные.
// main.js
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
preload: path.join(__dirname, 'preload.js')
}
})
mainWindow.loadURL('http://example.com');
// Listen for data from child
ipcMain.on('data-from-child', function (event, data) {
console.log('From target', data)
});
// Send
function sendData() {
mainWindow.webContents.send('on-parent-recv', null);
}
// Send
sendData();
-
// preload.js
var ipcRenderer = require('electron').ipcRenderer;
count = 0;
// Once we get something from the parent, send data back and then increment our counter
ipcRenderer.on('on-parent-recv', function (event, data) {
ipcRenderer.send('data-from-child', { value: 'hello', count: count });
count++;
});
Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает другую ссылку на example.com в окне, которое мы создали, эта инъекция, по моему мнению, вводится повторно?таким образом теряет размах.В качестве теста я создал интервал и затем перешел на другую страницу.Когда я вернул данные, они снова были на 0
.
Мой вопрос
Есть ли способ предварительно загрузить файл в само окно, которое не 't обновляется или перезагружается на страницу каждый раз?
Если бы я использовал, например, webview
, процесс рендеринга никогда не менялся, и файл javascript оставался бы там, в то время как webview
менялся бы, позволяя мнечтобы сохранить область действия / состояние.
Все, что я пытаюсь сделать здесь, это автоматизировать веб-сайт, который я загружаю в browserWindow
, что оказывается трудным.Я не могу использовать nightmarejs
, потому что веб-сайт использует NTLM для отправки учетных данных, и я не думаю, что это поддерживается в этой библиотеке.