powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
11 сообщений из 11, страница 1 из 1
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967724
ProudNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Подскажите пожалуйста, что я упускаю.
Я передаю данные из main.js в index.html, через render.js. Для передачи использую библиотеку promisify-electron-ipc
В index.html они отображаются списком (ul -> li).
На li повесил (на чистом javascript) событие клика.
Вот теперь странности. Если я организую в render.js тесовый вывод с массива. Все кликабельно.
НО если передаю данные как указал выше, событие не срабатывает.
Спасибо за ранее )
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967729
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProudNoob
НО если передаю данные как указал выше

Это как?
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967784
ProudNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

Ну да, сумбурно получилось )

Если я передаю данные с main.js в render.js и вывожу (добавляю) их в index.html (ul -> li), событие по клику не отрабатывается.
Вот общий пример:

main.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
. . .
const { promiseIpcMain } = require('promisify-electron-ipc');

promiseIpcMain
          .send("info", mainWindow.webContents, info)
          .then(answer => console.log(answer));
. . .



render.js

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
. . .
const { promiseIpcRenderer } = require('promisify-electron-ipc');


var ul = document.getElementById("info-block");

promiseIpcRenderer.on("info", info => {
        ul.innerHTML += '<li class="info"><a type="button"> ' + info+ </a></li>'
    );
});
. . .



index.html
Код: html
1.
2.
3.
4.
5.
6.
7.
. . .

<ul id="info-block">

<script src="js/render.js"></script>

. . .
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967793
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProudNoob,

ProudNoob
событие по клику не отрабатывается.

А должно? Я не вижу, чтобы в DOM кто-то вешал обработчик на <li>
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967801
ProudNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

Прошу прощение за невнимательност :)

Это в render.js

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
let informs = document.querySelectorAll(".info")
if (informs != null) {
    for (i = 0; i < informs .length; i++) {
        informs[i].addEventListener('click', function() {
            alert("Yes!!")
        });
    }
}
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967811
ProudNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я попробовал по умолчанию вставить в файл render.js в index.html
Событие то по клику обрабатывается. Событие больше не отрабатывается при внесении «дефолтных» данных, ни при добавлении при отправке.
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967814
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProudNoob,

Я так понимаю, что render отрабатывает 1 раз при ините? Если да, то всё нормально и ничего удивительного.
В таком случае надо как-то перевешивать обработчики на всё сразу или добавлять на вновь созданные.
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967816
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProudNoob,

Еще можно завернуть обработчик кнопки в отдельную функцию и вызывать вешалку из render.js каждый раз, когда добавляются элементы. Т.к. функция одна и та же она не будет вызваться 2 раза там, где уже есть обработчик.
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39967919
ProudNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
ProudNoob,

Еще можно завернуть обработчик кнопки в отдельную функцию и вызывать вешалку из render.js каждый раз, когда добавляются элементы. Т.к. функция одна и та же она не будет вызваться 2 раза там, где уже есть обработчик.



Я поопробовал обернуть клики в функцию и добавлять ее в li - onclick="myFunction()".
Но получил в консоли ошибку:

Код: javascript
1.
2.
3.
4.
Refused to execute inline event handler because it violates the following 
Content Security Policy directive: "script-src 'self'". 
Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') 
is required to enable inline execution.
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39968104
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProudNoob
Я поопробовал обернуть клики в функцию и добавлять ее в li - onclick="myFunction()".

Да не, я имею в виду делать также через addEventListener, но добавлять какую-то существующую функцию, а не анонимную.
...
Рейтинг: 0 / 0
Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
    #39968561
voraa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProudNoob,
Маленькое замечание

Код: javascript
1.
2.
let informs = document.querySelectorAll(".info")
if (informs != null) {



Это неправильно.
querySelectorAll возвращает не null, а пустой NodeList, если не найдены элементы
Надо так

Код: javascript
1.
2.
3.
4.
5.
6.
let informs = document.querySelectorAll(".info")
for (i = 0; i < informs .length; i++) {
    informs[i].addEventListener('click', function() {
        alert("Yes!!")
    });
}
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Electronjs. Не срабатывает событие клик при передаче данных с main.js в index.html ...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]