Greasy Fork is available in English.
Automatically displays replies hidden behind buttons
当前为
// ==UserScript==
// @name View More Twitter Replies
// @namespace jak0723
// @version 1.2.1
// @description Automatically displays replies hidden behind buttons
// @author JAK0723
// @match http*://*twitter.com/*/status/*
// @license MIT
// @grant none
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
function findAndClick(selector, textContent, observer) {
for (let elem of document.querySelectorAll(selector)) {
if (elem.textContent === textContent) {
elem.click();
observer.disconnect();
}
}
}
const viewMoreSelector = "[href*='i/status/'] div span";
const viewMoreText = "View more replies";
const showMoreSelector = "[role='button'] div div span";
const showMoreText = "Show more replies";
const offensiveSelector = "[role='button'] div span span";
const offensiveText = "Show";
const rootNode = document.querySelector("#react-root");
const config = {childList: true, subtree: true};
const rootCallback = function (mutationsList, observer) {
findAndClick(viewMoreSelector, viewMoreText, observer);
const repliesNode = document.querySelector("[aria-label='Timeline: Conversation']");
if (repliesNode != null) {
const repliesShowMoreObserver = new MutationObserver(showMoreCallback);
repliesShowMoreObserver.observe(repliesNode, config);
const repliesOffensiveObserver = new MutationObserver(offensiveCallback);
repliesOffensiveObserver.observe(repliesNode, config);
}
};
const showMoreCallback = function (mutationsList, observer) {
findAndClick(showMoreSelector, showMoreText, observer);
};
const offensiveCallback = function (mutationsList, observer) {
findAndClick(offensiveSelector, offensiveText, observer);
}
const rootObserver = new MutationObserver(rootCallback);
rootObserver.observe(rootNode, config);
})();