в .menu__list. Защита от дублей — проверка по DOM.
+ // Точный паттерн из официального плагина Lampa (iptv):
+ // создаём
и append'им в $('.menu .menu__list').eq(0)
function addMenuItem() {
- var list = $('.menu__list');
- if (!list.length) return;
- if ($('[data-action="' + PLUGIN.name + '"]').length) return; // уже в DOM
+ if ($('[data-action="' + PLUGIN.name + '"]').length) return; // уже есть
- var item = $(
+ var button = $(
'
' +
'
' +
'' +
@@ -131,7 +129,7 @@
'
' + PLUGIN.title + '
' +
''
);
- item.on('hover:enter', function () {
+ button.on('hover:enter', function () {
Lampa.Activity.push({
url: '',
component: PLUGIN.name,
@@ -139,27 +137,20 @@
page: PLUGIN.title
});
});
- list.append(item);
+
+ $('.menu .menu__list').eq(0).append(button);
Lampa.Selector.update();
}
function start() {
- // единственный вход: подписка на сборку меню
- Lampa.Listener.follow('menu', function (e) {
- if (e.type === 'start') {
- setTimeout(addMenuItem, 50);
- }
- });
- // если меню уже собрано до загрузки плагина — ловим ready
- Lampa.Listener.follow('app', function (e) {
- if (e.type === 'ready') {
- setTimeout(addMenuItem, 200);
- }
- });
+ addMenuItem();
}
if (window.Lampa && Lampa.Listener && Lampa.Activity) {
start();
+ Lampa.Listener.follow('app', function (e) {
+ if (e.type === 'ready') start();
+ });
} else {
document.addEventListener('lampa', start);
}