您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Expand posts on Reddit feeds and dynamically detect new posts to expand
- // ==UserScript==
- // @name Reddit Expand Post
- // @namespace https://rant.li/boson
- // @match *://*.reddit.com/*
- // @grant none
- // @version 1.7
- // @author Boson
- // @description Expand posts on Reddit feeds and dynamically detect new posts to expand
- // @license GNU AGPLv3
- // ==/UserScript==
- (function () {
- 'use strict';
- let expandingInProgress = false;
- function detectAndClickExpandos() {
- const expandos = document.querySelectorAll('.expando-button.collapsed');
- if (expandos.length === 0 || expandingInProgress) return;
- expandingInProgress = true;
- let delay = 0;
- const expandosArray = Array.from(expandos);
- const postsToExpand = expandosArray.slice(0, 10);
- if (postsToExpand.length > 0) {
- postsToExpand.forEach((expando, index) => {
- if (!expando.classList.contains('clicked')) {
- setTimeout(() => {
- expando.click();
- expando.classList.add('clicked');
- }, delay);
- delay += 1000;
- }
- });
- }
- setTimeout(() => {
- expandingInProgress = false;
- }, delay);
- }
- function setupIntersectionObserver() {
- const observer = new IntersectionObserver((entries) => {
- entries.forEach(entry => {
- if (entry.isIntersecting && !entry.target.classList.contains('expanded')) {
- detectAndClickExpandos();
- entry.target.classList.add('expanded');
- }
- });
- }, { threshold: 0.5 });
- const posts = document.querySelectorAll('.expando-button.collapsed');
- posts.forEach(post => observer.observe(post));
- }
- window.addEventListener('load', () => {
- detectAndClickExpandos();
- setupIntersectionObserver();
- });
- setInterval(() => {
- detectAndClickExpandos();
- }, 1000);
- })();