Своя кнопка в CEF

.Makarov.

Известный
Автор темы
193
37
Версия MoonLoader
.027.0-preview
(я вообще ничего не понимать в CEF)
В общем, у меня есть один скрипт, и в нем есть одна функция для инвентаря. Колхозить имгуи окна при открытии инвентаря или задрачивать команды для этой функции - не хотелось. Поэтому появилась идея: Нарисовать свою кнопку в инвентаре, а по ее нажатию уже запускать функцию. Кое-как вышло добавить кнопку, а вот с вызовом функции из скрипта - я встал в тупик. Как мне это можно реализовать? Хелп ми плиз, знатоки. Была мысль цефом отправить свой пакет, а скриптом его перехватить и вызвать функцию - но вышла лажа


Lua:
function initializeInventory()
    evalcef([[
        (function(){
            if (window.invObserver) return;
            function inject() {
                const header = document.querySelector('.inventory-window__header-title');
                const header2 = header.querySelector('.inventory-window__header-title-icon.icon-bag');
                if (!header2) return;
                if (header.querySelector('#inv-stack-wrapper')) return;
                const wrapper = document.createElement('div');
                wrapper.id = 'inv-stack-wrapper';
                wrapper.className = 'inventory-window__header-title';
                wrapper.innerHTML = `
                    ''
                    <i id="inventory-stack" class="inventory-window__header-control-sort icon-refresh" ></i>
                `;
                header.appendChild(wrapper);
                wrapper.querySelector('#inventory-stack').onclick = function() {
                    *ТУТ МОГ БЫТЬ ВЫЗОВ ФУНКЦИИ, но увы((*
                };
                console.log('[INV] injected');
            }
            // наблюдатель за DOM
            window.invObserver = new MutationObserver(() => {
                inject();
            });
            window.invObserver.observe(document.body, {
                childList: true,
                subtree: true
            });
            // первая попытка
            inject();
        })();
    ]])
end
 
Решение
Вот как по мне хороший пример. Тут тебе и своя кнопка, и общение с помощью пакетов

tygodym

Известный
86
16
Вот как по мне хороший пример. Тут тебе и своя кнопка, и общение с помощью пакетов
 
  • Нравится
Реакции: .Makarov.

.Makarov.

Известный
Автор темы
193
37
Вот как по мне хороший пример. Тут тебе и своя кнопка, и общение с помощью пакетов
Не знаю насколько верно, но пихуй, работает:
Lua:
wrapper.querySelector('#inventory-stack').onclick = function() {
    window.cef.SendMessage('КНОПОЧКА НАЖАЛАСЬ',1);
};

Спасибо, лучший прям =)