// ==UserScript== // @name Misskey Always Show Replies // @namespace https://bubbletea.dev/ // @version 1.0 // @description Automatically clicks the "Show replies" button on Misskey and misskey instances // @author shibao // @include /^https://.*misskey.*$/ // @downloadURL https://gitea.bubbletea.dev/shibao/misskey-always-show-replies/raw/branch/stable/misskey-always-show-replies.user.js // @updateURL https://gitea.bubbletea.dev/shibao/misskey-always-show-replies/raw/branch/stable/misskey-always-show-replies.user.js // @grant none // ==/UserScript== // from https://developer.mozilla.org/en-US/docs/Web/API/Node#recurse_through_child_nodes function eachNode(rootNode, callback) { if (!callback) { const nodes = []; eachNode(rootNode, function (node) { nodes.push(node); }); return nodes; } if (false === callback(rootNode)) { return false; } if (rootNode.hasChildNodes()) { const nodes = rootNode.childNodes; for (let i = 0, l = nodes.length; i < l; ++i) { if (false === eachNode(nodes[i], callback)) { return; } } } } (function () { "use strict"; const observer = new MutationObserver(function (mutationList) { for (const mutation of mutationList) { for (const addedNode of mutation.addedNodes) { eachNode(addedNode, function (node) { node.nodeName == "DIV" && node.innerHTML == "Show replies" && node.closest("button._button")?.click(); }); } } }); observer.observe(document, { childList: true, subtree: true, attributes: true, attributeFilter: ["role"], }); })();