Greasy Fork is available in English.
Automatically displays replies hidden behind buttons
当前为
// ==UserScript==
// @name View More Twitter Replies
// @namespace jak0723
// @version 1.3.3
// @icon https://live.staticflickr.com/7136/7842096300_012ec6cbda_q.jpg
// @description Automatically displays replies hidden behind buttons
// @author JAK0723
// @include http*://*twitter.com/*
// @license MIT
// @grant none
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
function findAndClick(selector, observer) {
const elem = document.querySelector(selector);
if (elem != null) {
elem.click();
observer.disconnect();
}
}
const repliesSelector = "[aria-labelledby^='accessible-list'][role='region'][class='css-1dbjc4n']"
const viewMoreSelector = "[href*='i/status/']" +
"[role='link']" +
"[data-focusable='true']" +
"[class*='css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1ny4l3l r-1j3t67a r-9qu9m4 r-o7ynqc r-6416eg'] " +
"div span";
const showMoreSelector = "[role='button']" +
"[data-focusable='true']" +
"[tabindex='0']" +
"[class*='css-18t94o4 css-1dbjc4n r-1ylenci r-jw8lkh r-1ny4l3l r-ou255f r-o7ynqc r-6416eg'] " +
"div div span";
const offensiveSelector = "[role='button']" +
"[data-focusable='true']" +
"[tabindex='0']" +
"[class*='css-18t94o4 css-1dbjc4n r-1niwhzg r-42olwf r-sdzlij r-1phboty r-rs99b7 r-1w2pmg r-1vsu8ta r-aj3cln r-1ny4l3l r-utggzx r-o7ynqc r-6416eg r-lrvibr'] " +
"div span span";
const moreRepliesSelector = "[role='button']" +
"[data-focusable='true']" +
"[tabindex='0']" +
"[class*='css-18t94o4 css-1dbjc4n r-1ylenci r-jw8lkh r-1ny4l3l r-ou255f r-o7ynqc r-6416eg']"
const rootNode = document.querySelector("#react-root");
const config = {childList: true, subtree: true};
setTimeout(function () {
const previewSelector = "[data-testid='primaryColumn']" +
"[class='css-1dbjc4n r-yfoy6g r-18bvks7 r-1ljd8xs r-13l2t4g r-1phboty r-1jgb5lz r-11wrixw r-61z16t r-1ye8kvj r-13qz1uu r-184en5c']"
const preview = document.querySelector(previewSelector);
if (preview != null) {
const viewMore = document.querySelector(viewMoreSelector)
if (viewMore != null) {
viewMore.click();
}
}
}, 3000);
const rootCallback = function (mutationsList, observer) {
const repliesNode = document.querySelector(repliesSelector);
if (repliesNode != null) {
new MutationObserver(showMoreCallback).observe(repliesNode, config);
new MutationObserver(offensiveCallback).observe(repliesNode, config);
new MutationObserver(moreRepliesCallback).observe(repliesNode, config)
}
};
const showMoreCallback = function (mutationsList, observer) {
findAndClick(showMoreSelector, observer);
};
const offensiveCallback = function (mutationsList, observer) {
findAndClick(offensiveSelector, observer);
};
const moreRepliesCallback = function (mutationsList, observer) {
for (let elem of document.querySelectorAll(moreRepliesSelector)) {
elem.click();
}
};
const rootObserver = new MutationObserver(rootCallback);
rootObserver.observe(rootNode, config);
})();