Написано с использованием чата ЖПТ, ответственности НЕ НЕСУ. Используйте на свой страх и риск. Какашками не бросаться. Будьте осторожны с тем что аккаунты остаются выделенными даже после перехода на другую страницу, если вы поставили и не сняли выделение. Говнокод // ==UserScript== // @name Выносим кнопки из выпадающего списка прямо на плитку аккаунта // @namespace http://tampermonkey.net/ // @version 0.1 // @description Выносим кнопки из выпадающего списка прямо на плитку аккаунта // @author You // @match https://lzt.market/user/items* // @grant none // ==/UserScript== (function() { 'use strict'; // Стиль для кнопок var buttonStyle = "padding: 0px 10px; background-color: rgb(54, 54, 54); color: rgb(210, 210, 210); border: none; border-radius: 6px; margin-right: 0px; cursor: pointer; vertical-align: top;"; // Найти все элементы с классом marketIndexItem var items = document.querySelectorAll('.marketIndexItem'); items.forEach(function(item) { var itemId = item.id.split('--')[1]; // Получить id из родителя // Создать кнопку "Редактировать" с соответствующим href var editButton = document.createElement('a'); editButton.setAttribute('class', 'button OverlayTrigger'); editButton.innerText = 'Описание'; editButton.setAttribute('style', buttonStyle); // Применить стиль // Создать кнопку "Открыть" с эмуляцией нажатия var openButton = document.createElement('a'); openButton.setAttribute('class', 'button OverlayTrigger'); openButton.innerText = 'Открыть/Закрыть'; openButton.setAttribute('style', buttonStyle); // Применить стиль openButton.addEventListener('click', function() { console.log('.OverlayTrigger[href="' + itemId + '/open-close"]'); var existingOpenButton = document.querySelector('.OverlayTrigger[href="' + itemId + '/open-close"]').click(); }); var titleButton = document.createElement('a'); titleButton.setAttribute('class', 'button OverlayTrigger'); titleButton.innerText = 'Заголовок'; titleButton.setAttribute('style', buttonStyle); // Применить стиль var deleteButton = document.createElement('a'); deleteButton.setAttribute('class', 'button OverlayTrigger'); deleteButton.innerText = 'Удалить'; deleteButton.setAttribute('style', buttonStyle); // Применить стиль deleteButton.addEventListener('click', function() { console.log('.OverlayTrigger[href="' + itemId + '/delete"]'); var existingOpenButton = document.querySelector('.OverlayTrigger[href="' + itemId + '/delete"]').click(); }); // Найти целевой div в текущем элементе var targetDiv = item.querySelector('.buttons'); // Добавить кнопки в div if (targetDiv) { targetDiv.appendChild(editButton); targetDiv.appendChild(titleButton); targetDiv.appendChild(openButton); targetDiv.appendChild(deleteButton); } }); function clearCheckboxes() { // Находим все активные чекбоксы на странице var checkboxes = document.querySelectorAll('input[type="checkbox"].InlineModCheck.item:checked'); checkboxes.forEach(function(checkbox) { checkbox.click(); // Снимаем выделение с каждого чекбокса console.log('clicked'); }); } function activateCheckboxAndClickEditButton() { clearCheckboxes(); // Сначала снимаем выделение со всех чекбоксов let parentLi = this.closest('li'); if(parentLi) { let checkbox = parentLi.querySelector('input[type="checkbox"].InlineModCheck.item'); if(checkbox && !checkbox.checked) { checkbox.click(); } var select = document.getElementById('ModerationSelect'); select.value = 'editDescription'; var event = new Event('change', { bubbles: true }); select.dispatchEvent(event); } } function activateCheckboxAndClickTitleButton() { clearCheckboxes(); // Сначала снимаем выделение со всех чекбоксов let parentLi = this.closest('li'); if(parentLi) { let checkbox = parentLi.querySelector('input[type="checkbox"].InlineModCheck.item'); if(checkbox && !checkbox.checked) { checkbox.click(); } var select = document.getElementById('ModerationSelect'); select.value = 'editTitle'; var event = new Event('change', { bubbles: true }); select.dispatchEvent(event); } } // Привязка функции к кнопкам "Редактировать" и "Открыть" document.querySelectorAll('.button.OverlayTrigger').forEach(button => { if(button.innerText.trim() === 'Описание') { button.addEventListener('click', activateCheckboxAndClickEditButton); } }); // Привязка функции к кнопкам "Редактировать" и "Открыть" document.querySelectorAll('.button.OverlayTrigger').forEach(button => { if(button.innerText.trim() === 'Заголовок') { button.addEventListener('click', activateCheckboxAndClickTitleButton); } }); })(); JS // ==UserScript== // @name Выносим кнопки из выпадающего списка прямо на плитку аккаунта // @namespace http://tampermonkey.net/ // @version 0.1 // @description Выносим кнопки из выпадающего списка прямо на плитку аккаунта // @author You // @match https://lzt.market/user/items* // @grant none // ==/UserScript== (function() { 'use strict'; // Стиль для кнопок var buttonStyle = "padding: 0px 10px; background-color: rgb(54, 54, 54); color: rgb(210, 210, 210); border: none; border-radius: 6px; margin-right: 0px; cursor: pointer; vertical-align: top;"; // Найти все элементы с классом marketIndexItem var items = document.querySelectorAll('.marketIndexItem'); items.forEach(function(item) { var itemId = item.id.split('--')[1]; // Получить id из родителя // Создать кнопку "Редактировать" с соответствующим href var editButton = document.createElement('a'); editButton.setAttribute('class', 'button OverlayTrigger'); editButton.innerText = 'Описание'; editButton.setAttribute('style', buttonStyle); // Применить стиль // Создать кнопку "Открыть" с эмуляцией нажатия var openButton = document.createElement('a'); openButton.setAttribute('class', 'button OverlayTrigger'); openButton.innerText = 'Открыть/Закрыть'; openButton.setAttribute('style', buttonStyle); // Применить стиль openButton.addEventListener('click', function() { console.log('.OverlayTrigger[href="' + itemId + '/open-close"]'); var existingOpenButton = document.querySelector('.OverlayTrigger[href="' + itemId + '/open-close"]').click(); }); var titleButton = document.createElement('a'); titleButton.setAttribute('class', 'button OverlayTrigger'); titleButton.innerText = 'Заголовок'; titleButton.setAttribute('style', buttonStyle); // Применить стиль var deleteButton = document.createElement('a'); deleteButton.setAttribute('class', 'button OverlayTrigger'); deleteButton.innerText = 'Удалить'; deleteButton.setAttribute('style', buttonStyle); // Применить стиль deleteButton.addEventListener('click', function() { console.log('.OverlayTrigger[href="' + itemId + '/delete"]'); var existingOpenButton = document.querySelector('.OverlayTrigger[href="' + itemId + '/delete"]').click(); }); // Найти целевой div в текущем элементе var targetDiv = item.querySelector('.buttons'); // Добавить кнопки в div if (targetDiv) { targetDiv.appendChild(editButton); targetDiv.appendChild(titleButton); targetDiv.appendChild(openButton); targetDiv.appendChild(deleteButton); } }); function clearCheckboxes() { // Находим все активные чекбоксы на странице var checkboxes = document.querySelectorAll('input[type="checkbox"].InlineModCheck.item:checked'); checkboxes.forEach(function(checkbox) { checkbox.click(); // Снимаем выделение с каждого чекбокса console.log('clicked'); }); } function activateCheckboxAndClickEditButton() { clearCheckboxes(); // Сначала снимаем выделение со всех чекбоксов let parentLi = this.closest('li'); if(parentLi) { let checkbox = parentLi.querySelector('input[type="checkbox"].InlineModCheck.item'); if(checkbox && !checkbox.checked) { checkbox.click(); } var select = document.getElementById('ModerationSelect'); select.value = 'editDescription'; var event = new Event('change', { bubbles: true }); select.dispatchEvent(event); } } function activateCheckboxAndClickTitleButton() { clearCheckboxes(); // Сначала снимаем выделение со всех чекбоксов let parentLi = this.closest('li'); if(parentLi) { let checkbox = parentLi.querySelector('input[type="checkbox"].InlineModCheck.item'); if(checkbox && !checkbox.checked) { checkbox.click(); } var select = document.getElementById('ModerationSelect'); select.value = 'editTitle'; var event = new Event('change', { bubbles: true }); select.dispatchEvent(event); } } // Привязка функции к кнопкам "Редактировать" и "Открыть" document.querySelectorAll('.button.OverlayTrigger').forEach(button => { if(button.innerText.trim() === 'Описание') { button.addEventListener('click', activateCheckboxAndClickEditButton); } }); // Привязка функции к кнопкам "Редактировать" и "Открыть" document.querySelectorAll('.button.OverlayTrigger').forEach(button => { if(button.innerText.trim() === 'Заголовок') { button.addEventListener('click', activateCheckboxAndClickTitleButton); } }); })(); Что делает