Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Открыть все спойлеры на странице (https://javascript.ru/forum/css-html-firefox-mizilla/73352-otkryt-vse-spojjlery-na-stranice.html)

Capoeirista 09.04.2018 01:59

Открыть все спойлеры на странице
 
Может ли кто-нибудь написать скрипт (или помочь это сделать) для открытия всех спойлеров на странице по горячей клавише/ам или по кнопке (создаваемой скриптом рядом с первым, к примеру)?

j0hnik 09.04.2018 02:00

страницу угадать надо?

Nexus 09.04.2018 10:07

var spoilers = [].slice.call(document.querySelectorAll('SPOILERS-SELECTOR'));
if (!spoilers.length)
    return;

var btn = document.createElement('button');
btn.type = 'button';
btn.innerHTML = 'Button';
btn.addEventListener('click', function() {
  spoilers.forEach(function(node) {
      node.dispatchEvent(new Event('click'));
  });
});
              
spoilers[0].parentNode.inserBefore(btn, spoilers[0]);

рони 09.04.2018 10:13

Nexus,
строка 10 кавычка!!!

Nexus 09.04.2018 10:34

рони, спасибо :)

Capoeirista 09.04.2018 18:43

Цитата:

Сообщение от j0hnik
страницу угадать надо?

Не понял?
Если имелось ввиду для какого сайта, то NNM-Club

Nexus,
Я правильно понимаю, что вместо SPOILERS-SELECTOR нужно вставить нужный в моём случае css-класс, то бишь
https://i.imgur.com/MPIID0I.png

и я его задействовал посредством расширения для браузера - Tampermonkey таким образом
// ==UserScript==
// @name         New Userscript
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]https://nnm-club.me[/url]
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
var spoilers = [].slice.call(document.querySelectorAll('spoiler-wrap'));
if (!spoilers.length)
    return;

var btn = document.createElement('button');
btn.type = 'button';
btn.innerHTML = 'Button';
btn.addEventListener('click', function() {
  spoilers.forEach(function(node) {
      node.dispatchEvent(new Event('click'));
  });
});
spoilers[0].parentNode.inserBefore(btn, spoilers[0]);
})();


Если правильно, то ничего не получается. Создаваемой js-ом кнопки нет или по-крайней мере я её не вижу, а при нажатии на спойлер - открывается только один.

рони 09.04.2018 18:49

Capoeirista,
13 строка, точка где?

Capoeirista 09.04.2018 19:19

Цитата:

Сообщение от рони (Сообщение 482837)
Capoeirista,
13 строка, точка где?

Ну да, чего это я ...
Добавил точку к классу, но результат нулевой.

Nexus 09.04.2018 19:23

Capoeirista, строку 22 на это замените:
node.querySelector('.clickable').dispatchEvent(new Event('click'));

рони 09.04.2018 19:23

Capoeirista,
кнопка появилась?


Часовой пояс GMT +3, время: 12:29.