Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 09.04.2018, 21:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,983

Capoeirista, не против, вряд ли он кому-то пригодится.
Ответить с цитированием
  #22 (permalink)  
Старый 10.04.2018, 01:06
Аватар для Capoeirista
Интересующийся
Отправить личное сообщение для Capoeirista Посмотреть профиль Найти все сообщения от Capoeirista
 
Регистрация: 20.11.2013
Сообщений: 16

Сообщение от Nexus
не против, вряд ли он кому-то пригодится.
Пригодится. Только не большинству.

ПС. Как добавить новый абзац перед кнопкой?
JQuery ещё хоть немного учил, а JS как-то хотел, но некогда.
Хотел сам добавить, но что-то не получилось.

https://i.imgur.com/CC1rk6o.png
https://i.imgur.com/uaMNduL.png
Ответить с цитированием
  #23 (permalink)  
Старый 10.04.2018, 01:15
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

spoilers[0].insertAdjacentHTML('beforebegin', '<br>');
Ответить с цитированием
  #24 (permalink)  
Старый 10.04.2018, 13:38
Аватар для Capoeirista
Интересующийся
Отправить личное сообщение для Capoeirista Посмотреть профиль Найти все сообщения от Capoeirista
 
Регистрация: 20.11.2013
Сообщений: 16

j0hnik,
БлагоДарю
Ответить с цитированием
  #25 (permalink)  
Старый 27.09.2018, 00:53
Аватар для Capoeirista
Интересующийся
Отправить личное сообщение для Capoeirista Посмотреть профиль Найти все сообщения от Capoeirista
 
Регистрация: 20.11.2013
Сообщений: 16

j0hnik,
можешь ещё помочь немного - не сильно напрягает, но ...
Если под спойлером находится картинка, то через твой скрипт если открывать, то она не отображается и место под неё тоже. просто слегка открылся и там пусто. Если вручную переоткрыть, то нормально.

И если не сильно сложно, то можно ли исключить два постоянных спойлера?


Разметка у них такая

Последний раз редактировалось Capoeirista, 27.09.2018 в 15:16.
Ответить с цитированием
  #26 (permalink)  
Старый 19.01.2020, 16:38
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,983

Цитата:
Добрый день.
Наткнулся в интернете на форум, где Вы помогли написать скрипт на открытие всех спойлеров на странице.
Открыть все спойлеры на странице.
Скачал его NNM-Club Open Spoilers с Greasy Fork. Работает на большинстве сайтов, но открывает только самый первый спойлер, и не открывает, спойлеры внутри спойлера. Напрример с той страницы
пример с несколькими спойерами

Не могли бы Вы подсказать как надо модифицировать, чтобы открывалось все.
Спасибо.
Можно так попробовать:
// ==UserScript==
// @name         NNM-Club Open Spoilers
// @description  Создаёт кнопку над первым спойлером, при нажатии на которую открываются все спойлеры на странице NNM-Club. Можно (не проверял, но по логике должно) переделать для другого сайта. Для этого нужно вместо (или добавить через запятую) CSS-класса .spoiler-wrap вставить селектор спойлера с нужного сайта. Добавлено для USBTor.Ru  Новое в 0.4: Исключены от открытия скриптом спойлеры - "Список файлов в торренте" и "Похожие темы"
// @license MIT
// @icon         [url]http://nnmclub.to/favicon.ico[/url]
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.4
// @author       Nexus с сайта JavaScript.Ru
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    var spoilers = document.querySelectorAll('div.postbody .spoiler-wrap, .sp-wrap');
    if (!spoilers.length) {
        return;
    }
    
    var CLOSED_SPOILER_LABEL = 'Открыть все спойлеры';
    var OPENED_SPOILER_LABEL = 'Закрыть все спойлеры';
    
    var button = document.createElement('button');
    button.type = 'button';
    button.innerHTML = CLOSED_SPOILER_LABEL;
    button.dataset.isOpen = '0';
    button.style.cssText = 'padding: 5px; border: solid 1px;';
    
    button.addEventListener('click', function () {
        var spoilerIsOpen = this.dataset.isOpen === '1';
        
        this.dataset.isOpen = +!spoilerIsOpen;
        this.textContent = spoilerIsOpen ? CLOSED_SPOILER_LABEL : OPENED_SPOILER_LABEL;
        
        [].forEach.call(spoilers, function (spoilerWrapper) {
            var clickTarget;
            
            if (
                spoilerWrapper.classList.contains('sp-wrap') && 
                spoilerIsOpen === spoilerWrapper.classList.contains('sp-opened')
            ) {
                clickTarget = spoilerWrapper.querySelector('.sp-head');
            } else if (!spoilerWrapper.parentNode.classList.contains('center')) {
                clickTarget = spoilerWrapper.querySelector('.clickable');
            }
            
            clickTarget && clickTarget.dispatchEvent(
                new Event('click', { bubbles: true })
            );
        });
    });
    
    var buttonContainer = document.createElement('div');
    buttonContainer.style.margin = '8px auto';
    buttonContainer.style.width = '98%';
    buttonContainer.appendChild(button);
    
    spoilers[0].parentNode.insertBefore(buttonContainer, spoilers[0]);
})();

Последний раз редактировалось Nexus, 19.01.2020 в 16:43.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое отображение контента на 2ой странице, в зависимости от выбора на 1ой Volchen0ck Events/DOM/Window 2 14.05.2014 16:01
Ajax+js+5 форм обратной связи на одной странице aleksandr8i AJAX и COMET 0 01.04.2014 10:04
Выделить все checkbox с помощью jquery Alyona jQuery 16 17.01.2012 10:44
ajax, history, навигация, адресная строка и индексация. все в одном. firsttinman AJAX и COMET 3 24.10.2011 18:14
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37