Greasy Fork 支持简体中文。

Sufficient Velocity Userscipts

The userscript removes both instances of threadmark account, it removes the count of how many replies are left in a thread, it Remains the last page number to the word last from the number of the last page, and remove the total reply count when viewing all the threads by a user.

// ==UserScript==
// @name         Sufficient Velocity Userscipts
// @namespace    http://yournamespacehere.com/
// @version      0.
// @description  The userscript removes both instances of threadmark account, it removes the count of how many replies are left in a thread, it Remains the last page number to the word last from the number of the last page, and remove the total reply count when viewing all the threads by a user. 
// @author       YourName
// @match       https://forums.sufficientvelocity.com/*
 // @license MIT
// ==/UserScript==

(function() {
   try {
    // Select the first element with the class 'u-dimmed' representing the 'remaining replies' section
let remainingReplies = document.querySelector('.u-dimmed');

// Check if the 'remaining replies' section exists on the page
if (remainingReplies != null) {
    // Remove the 'remaining replies' section from the page if it's found
    remainingReplies.remove();
}
     } catch (error) {
        console.error("Error removing 'remaining replies' section:", error.message);
    }
})();

(function() {
  try {
    // Select the first element with the class 'fauxBlockLink' representing the first 'Threadmark Count' section
let firstthreadmarkCount= document.querySelectorAll('.fauxBlockLink')

// Check if the 'Threadmark Count' section exists on the page
if (firstthreadmarkCount != null) {
    // Remove the 'Threadmark Count' section from the page if it's found
    for (let i = 0; i < firstthreadmarkCount.length; i++) {
  firstthreadmarkCount[i].remove();
}
}
    } catch (error) {
        console.error("Error removing 'Threadmark Count' sections:", error.message);
    }
})();

(function() {
    //TODO have it work on every tab in the thread header instead of only the one open
try {
//finds which classes has threadmarks
function threadmarksFinder(element) {
  return element.textContent.includes("threadmarks");
}

//finds every spans class
let spans = document.querySelectorAll('span');

////finds spans which has threadmarks
let filteredSpans = Array.from(spans).filter(threadmarksFinder);
//console.log(filteredSpans)

//applies filteredSpans to every span
filteredSpans.forEach(function(span) {
  let text = span.textContent;
 //console.log(text)
// deletes threadmarks and the count through replacing with an empty space
let newText = text.replace(/\d+ threadmarks, /, '');
//        console.log(newText)
  span.textContent = newText;
});
  } catch (error) {
        console.error("Error modifying threadmarks:", error.message);
    }
})();

(function() {
  try {
      // Select all elements with class 'contentRow-minor' and 'listInline li' to find total replies for each thread
let totalReplies = document.querySelectorAll('.contentRow-minor .listInline li');

// Iterate through each 'li' element in the totalReplies NodeList
totalReplies.forEach(function(li) {
    // Check if the 'li' element text contains 'Replies:' and remove it if true
    if (li.innerText.includes('Replies:')) {
        li.remove();
    }
});
    } catch (error) {
        console.error("Error removing total replies information:", error.message);
    }
})();

(function() {
  try {
    //console.log("console.log from line 11");
//console.log("console.log from line 11");
//    console.log("Script is running!");
    let bottomButtons = document.querySelectorAll('.block-outer--after .pageNav-page');
    //selects all page navigation buttons in the bottom set excluding next
/*    console.log(bottomButtons)
    console.log(bottomButtons.length - 1)
    console.log(document.querySelectorAll('.block-outer--after .pageNav-page'))*/
    if (bottomButtons .length > 0) {
        bottomButtons[bottomButtons.length - 1].querySelector("a").textContent = "Last";
    /// rename the text of the last button to Last. it doesn't touch the hyperlink        
    }
    } catch (error) {
        console.error("Error renaming bottom navigation button:", error.message);
    }
})();

(function() {
  try {
    //confirm script starts
//    console.log("Second script is running!");
   
// Select all page navigation buttons with the class 'pageNav-page' found in '.block-outer-main' excluding the next buttons
// This includes buttons from both the top and bottom navigation sets becuase I couldn't find a class for only the top set
    let topButtons = document.querySelectorAll('.block-outer-main .pageNav-page');

    let allLi = document.querySelectorAll('.pageNav-page');
    //makes a list of elements with the pageNav-page clas
 if (topButtons .length > 0 && allLi .length > 0) {
// Initialize variable for the class represent the last page button and a counter

let targetLi;
let count = 0;

for(let i = 0; i < allLi.length; i++) {
  if (allLi[i].classList.length === 1 && topButtons[0].classList.contains('pageNav-page--current')){
// checks if I'm on the first page of a thread
    targetLi = allLi[i];
// removes all elements but the one at the index i
      break;  

  }
     {
          if (allLi[i].classList.length === 1) {
// checks for 'pageNav-page--current' class
    count++;
// adds one to the count
    if(count === 2) {
// check if the count is 2
      targetLi = allLi[i];
// removes all elements but the one at the index i
      break;
      }
    }
  }
}   
//console.log(topButtons[0].classList)
//console.log(topButtons[0].querySelector("a"))

targetLi.querySelector("a").textContent = "Last";
    // rename the element returned from targetLi to Last. it specificlly only renames the text and not the hyperlink
 }
//console.log("console.log from line 52");
    } catch (error) {
        console.error("Error renaming top navigation button:", error.message);
    }
})();