Mavrikii
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору euheny вот, накидал скрипт для TamperMonkey аддона для браузера, если что. можно поставить одну закладку на тему. лень было на чистом js писать, подгружает jquery сам. ps: добавил и черный список для сообщений. Код: // ==UserScript== // @name Закладки и ЧС // @namespace http://forum.ru-board.com/ // @description Реализует закладки для тем и ЧС // @author You // @version 0.0 // @match http://forum.ru-board.com/topic.cgi?* // @icon https://www.google.com/s2/favicons?sz=64&domain=ru-board.com // @require https://code.jquery.com/jquery-3.6.0.min.js // @grant none // @run-at document-body // ==/UserScript== // реализация закладок для возвращения к тому посту, на котором поставлена закладка (function($) { 'use strict'; let params = new URLSearchParams(window.location.search), topic = params.get('topic') || 0, forum = params.get('forum') || 0, start = params.get('start') || 0, key = forum + ':' + topic, bookmarks = JSON.parse(localStorage.getItem('bookmarks')); if (bookmarks === null) { bookmarks = {}; } $(document).on('update-bookmarks', function() { if ($('.post:eq(0)').length) { let book = bookmarks && bookmarks.hasOwnProperty(key) ? bookmarks[key] : null; if (book) { let params2 = new URLSearchParams(window.location.search); params2.set('start', book.s); params2.delete('glp'); $('<a>').addClass('bookmarks') .text(' (Есть закладка)') .attr('href', '?' + params2.toString() + '#' + (book.p + 1)) .insertAfter($('td.tit:eq(0) a:last, td.tit:last a:last')); } $('.post').prev().each(function(i) { if (book && book.s == start && book.p == i) { $('<span>.: Закладка :.</span>').css({'float': 'right', 'cursor': 'pointer', 'color': 'green', 'font-weight': 'bold'}) .addClass('out bookmarks') .prop('title', 'Удадить закладку') .insertBefore($(this)); } else { $('<span>» В закладки</span>').css({'float': 'right', 'cursor': 'pointer', 'color': 'blue'}) .addClass('bookmarks') .data('index', i) .prop('title', 'Добавить в закладки') .insertBefore($(this)); } }); } }).on('click', 'span.bookmarks', function() { if (!$(this).hasClass('out')) { bookmarks[key] = {'s': start, 'p': $(this).data('index')}; } else { delete bookmarks[key]; } localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); $('.bookmarks').remove(); $(document).trigger('update-bookmarks'); }).trigger('update-bookmarks'); })(jQuery); // чёрный список (function($) { 'use strict'; let bl = JSON.parse(localStorage.getItem('bl')); if (bl === null) { bl = []; } $(document).on('update-bl', function() { $('.post').each(function() { const p = $(this).addClass('parsed').closest('tbody'), n = p.find('>tr:first a.m'), a = n.find('b').text(), c = p.find('>tr:last a.tpc[title="Нажать сюда"]').text(), r = p.parent().next('div.replaced'); if (bl.indexOf(a) != -1) { if (!r.length) { $('<div class="dats replaced"/>') .css('text-align', 'center') .html('Сообщение <b title="' + a + ', отправлено ' + c + '">автора</b> из Чёрного Списка, <b style="cursor:pointer" class="show-bl">показать</b>?') .insertAfter(p.parent().hide()); } $('<span class="manage-bl dats" style="cursor:pointer;margin-left:1em;color:green"/>').text('(из ЧС)').insertAfter(n); } else { if (r.length) { p.parent().show(); r.remove(); } $('<span class="manage-bl dats" style="cursor:pointer;margin-left:1em;color:red"/>').text('(в ЧС)').insertAfter(n); } }); }).on('click', 'b.show-bl,span.manage-bl', function() { if ($(this).hasClass('show-bl')) { $(this).closest('div').hide().prev().show(); } else { const a = $(this).closest('tbody').find('>tr:first a.m b').text(), p = bl.indexOf(a); if (p == -1) { bl.push(a); } else { bl.splice(p, 1); } $('span.manage-bl').remove(); $(document).trigger('update-bl'); localStorage.setItem('bl', JSON.stringify(bl)); } }).trigger('update-bl'); })(jQuery); |
| Всего записей: 15582 | Зарегистр. 20-09-2014 | Отправлено: 23:54 25-02-2024 | Исправлено: Mavrikii, 04:41 28-02-2024 |
|