09.04.2018, 20:44
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Capoeirista, не против, вряд ли он кому-то пригодится.
|
|
10.04.2018, 00:06
|
|
Интересующийся
|
|
Регистрация: 20.11.2013
Сообщений: 19
|
|
Сообщение от Nexus
|
не против, вряд ли он кому-то пригодится.
|
Пригодится. Только не большинству.
ПС. Как добавить новый абзац перед кнопкой?
JQuery ещё хоть немного учил, а JS как-то хотел, но некогда.
Хотел сам добавить, но что-то не получилось.
https://i.imgur.com/CC1rk6o.png
https://i.imgur.com/uaMNduL.png
|
|
10.04.2018, 00:15
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
spoilers[0].insertAdjacentHTML('beforebegin', '<br>');
|
|
10.04.2018, 12:38
|
|
Интересующийся
|
|
Регистрация: 20.11.2013
Сообщений: 19
|
|
j0hnik,
БлагоДарю
|
|
26.09.2018, 23:53
|
|
Интересующийся
|
|
Регистрация: 20.11.2013
Сообщений: 19
|
|
j0hnik,
можешь ещё помочь немного - не сильно напрягает, но ...
Если под спойлером находится картинка, то через твой скрипт если открывать, то она не отображается и место под неё тоже. просто слегка открылся и там пусто. Если вручную переоткрыть, то нормально.
И если не сильно сложно, то можно ли исключить два постоянных спойлера?
Разметка у них такая
Последний раз редактировалось Capoeirista, 27.09.2018 в 14:16.
|
|
19.01.2020, 16:38
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Цитата:
|
Добрый день.
Наткнулся в интернете на форум, где Вы помогли написать скрипт на открытие всех спойлеров на странице.
Открыть все спойлеры на странице.
Скачал его 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.
|
|
21.10.2023, 22:47
|
|
Интересующийся
|
|
Регистрация: 20.11.2013
Сообщений: 19
|
|
Может кто поправить для сайта 4PDA?
И чтобы также открывались спойлеры внутри спойлеров.
Например на странице
https://4pda.to/forum/index.php?showtopic=949619
(function () {
var spoilers = [].slice.call(document.querySelectorAll('div.postcolor .spoil'));
if (!spoilers.length) {
return;
}
var btn = document.createElement('button');
btn.type = 'button';
btn.innerHTML = 'Открыть все спойлеры';
btn.addEventListener('click', function () {
spoilers.forEach(function (node) {
if(node.parentNode.classList.contains('close')) return;
node.querySelector('.block-title').dispatchEvent(new Event('click'));
});
});
spoilers[0].insertAdjacentHTML('beforebegin', '<br>');
spoilers[0].parentNode.insertBefore(btn, spoilers[0]);
})();
Последний раз редактировалось Capoeirista, 21.10.2023 в 22:52.
|
|
22.10.2023, 10:36
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,748
|
|
Сообщение от Capoeirista
|
Может кто поправить для сайта 4PDA?
|
(function () {
var spoilers = document.querySelectorAll('div.post-block.spoil');
if (!spoilers.length) {
return;
}
var btn = document.createElement('button');
btn.type = 'button';
btn.innerHTML = 'Открыть все спойлеры';
btn.addEventListener('click', function () {
spoilers.forEach(function (node) {
node.classList.replace('close', 'open');
const imgs = node.querySelectorAll('img[data-src]');
imgs.forEach (img => img.src = img.dataset.src)
});
});
spoilers[0].insertAdjacentHTML('beforebegin', '<br>');
spoilers[0].parentNode.insertBefore(btn, spoilers[0]);
})();
Но там вообщето Ctrl + click по спойлеру открывает все спойлеры.
Последний раз редактировалось voraa, 22.10.2023 в 12:27.
|
|
|
|