Я пытаюсь проверить, существует ли div с именем класса в текущем просмотре страницы. Я попытался использовать javascript, чтобы найти элемент и отправить результат с использованием IP C, но я получил сообщение «Ошибка сценария при выполнении», и я не уверен, как решить эту проблему.
Ниже приведен мой код который открывает страницу, проверяет, присутствует ли div, выполняя javascript, отправляет результат от средства визуализации обратно в main и применяет правильный css в соответствии с тем, что было отправлено обратно. (С моим ограниченным знанием интерфейса я чувствую, что это неправильный подход).
index. js
const { app, BrowserWindow, globalShortcut } = require('electron')
const path = require('path');
const fs = require('fs');
const {ipcMain} = require('electron')
const DOMAIN_URL = "instagram.com"
let win;
function createWindow () {
const options = {
width: 500,
height: 550,
resizable: false,
maximizable: false,
movable: true,
titleBarStyle: 'hiddenInset',
title: 'InstaSend',
webPreferences: {
nodeIntegration: false
},
};
// create main window
win = new BrowserWindow(options)
win.loadURL('https://'+DOMAIN_URL)
// check if we are at the login page
win.webContents.on('dom-ready', function (e) {
win.webContents.executeJavaScript(`
var ipcRenderer = require('electron').ipcRenderer;
var hasLogin = document.getElementsbyClassName("gr27e")[0];
ipcRenderer.send('checkLogin', hasLogin)
`);
});
ipcMain.on('checkLogin', function(event, hasLogin){
console.log(hasLogin);
if(!hasLogin){
win.resizable = true
win.maximizable = true
win.setSize(1100,950, true)
win.webContents.insertCSS(fs.readFileSync(path.join(__dirname, '/assets/dash.css'), 'utf8'));
}else{
win.webContents.insertCSS(fs.readFileSync(path.join(__dirname, '/assets/ig.css'), 'utf8'));
}
})
}
app.on('ready', function(){
createWindow()
});
ошибка вывода:
internal/process/warning.js:27 (node:89911) UnhandledPromiseRejectionWarning: Error: Script failed to execute, this normally means an error was thrown. Check the renderer console for the error.
at WebFrame../lib/renderer/api/web-frame.ts.WebFrame.<computed> [as executeJavaScript] (electron/js2c/renderer_init.js:1590:33)
at electron/js2c/renderer_init.js:2844:43
at EventEmitter.<anonymous> (electron/js2c/renderer_init.js:2419:57)
at EventEmitter.emit (events.js:210:5)
at Object.onMessage (electron/js2c/renderer_init.js:2188:16)
writeOut @ internal/process/warning.js:27
2internal/process/warning.js:27 (node:89911) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
writeOut @ internal/process/warning.js:27
2internal/process/warning.js:27 (node:89911) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.