您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically expands the older comments accordion in JIRA so you see all comments by default. Workaround to jira.comment.collapsing.minimum.hidden. Aids in searching page. Forked from https://greasyforks.org/en/scripts/29233-atlassian-jira-auto-expand-older-comments and fixed (no external dependencies).
// ==UserScript== // @name Auto-expand older comments in JIRA issue // @description Automatically expands the older comments accordion in JIRA so you see all comments by default. Workaround to jira.comment.collapsing.minimum.hidden. Aids in searching page. Forked from https://greasyforks.org/en/scripts/29233-atlassian-jira-auto-expand-older-comments and fixed (no external dependencies). // @include https://jira.* // @include http://jira.* // @match https://jira.* // @match http://jira.* // @license MIT // @version 1.2 // @namespace https://greasyforks.org/en/users/709170 // ==/UserScript== /** * A utility function for userscripts that detects and handles AJAXed content. * * Author: https://github.com/CoeJoder/waitForKeyElements.js * Downloaded from: https://cdn.jsdelivr.net/gh/CoeJoder/[email protected]/waitForKeyElements.js * * Usage example: * * function callback(domElement) { * domElement.innerHTML = "This text inserted by waitForKeyElements()."; * } * * waitForKeyElements("div.comments", callback); * // or * waitForKeyElements(selectorFunction, callback); * * @param {(string|function)} selectorOrFunction - The selector string or function. * @param {function} callback - The callback function; takes a single DOM element as parameter. * If returns true, element will be processed again on subsequent iterations. * @param {boolean} [waitOnce=true] - Whether to stop after the first elements are found. * @param {number} [interval=300] - The time (ms) to wait between iterations. * @param {number} [maxIntervals=-1] - The max number of intervals to run (negative number for unlimited). */ function waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals) { if (typeof waitOnce === "undefined") { waitOnce = true; } if (typeof interval === "undefined") { interval = 300; } if (typeof maxIntervals === "undefined") { maxIntervals = -1; } var targetNodes = (typeof selectorOrFunction === "function") ? selectorOrFunction() : document.querySelectorAll(selectorOrFunction); var targetsFound = targetNodes && targetNodes.length > 0; if (targetsFound) { targetNodes.forEach(function(targetNode) { var attrAlreadyFound = "data-userscript-alreadyFound"; var alreadyFound = targetNode.getAttribute(attrAlreadyFound) || false; if (!alreadyFound) { var cancelFound = callback(targetNode); if (cancelFound) { targetsFound = false; } else { targetNode.setAttribute(attrAlreadyFound, true); } } }); } if (maxIntervals !== 0 && !(targetsFound && waitOnce)) { maxIntervals -= 1; setTimeout(function() { waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals); }, interval); } } function clickWhenItAppears (jNode) { var clickEvent = document.createEvent ('MouseEvents'); clickEvent.initEvent ('click', true, true); jNode.dispatchEvent (clickEvent); } //bWaitOnce = true; // <a class="collapsed-comments" href="(redacted)"><span class="collapsed-comments-line"></span><span class="collapsed-comments-line"></span><span class="show-more-comments" data-collapsed-count="12">12 older comments</span></a> waitForKeyElements ( "a[class*='collapsed-comments']", clickWhenItAppears ); // <button class="aui-button btn-load-more" resolved=""><span>Load more older comments</span></button> waitForKeyElements ( "button[class*='btn-load-more']", clickWhenItAppears );