topPost

置顶v2ex高赞回复

  1. // ==UserScript==
  2. // @name topPost
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description 置顶v2ex高赞回复
  6. // @author yuyinws
  7. // @match *://v2ex.com/t/*
  8. // @match *://*.v2ex.com/t/*
  9. // @grant GM_registerMenuCommand
  10. // @grant GM_unregisterMenuCommand
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // @icon https://www.v2ex.com/static/favicon.ico
  14. // @run-at document-end
  15. // @license MIT
  16. // ==/UserScript==
  17. (() => {
  18. // star限制值
  19. let starLimit = GM_getValue("starLimit") || 5;
  20. // 菜单注册(不可用)
  21. GM_registerMenuCommand(`star限制值:${starLimit}(点击修改)`, () => {
  22. let starLimit = prompt("请输入");
  23. GM_setValue("starLimit", starLimit);
  24. });
  25.  
  26. let postMap = new Map();
  27.  
  28. let topEl = document.createElement("div");
  29. topEl.className = "box";
  30.  
  31. let refEl = document.querySelector("#Main").childNodes[5];
  32.  
  33. let sepEl = document.createElement("div");
  34. sepEl.className = "sep20";
  35.  
  36. let cellEl = document.createElement("div");
  37. cellEl.className = "cell";
  38. cellEl.innerText = "高赞回复";
  39.  
  40. // 获取所有有star的回复
  41. document.querySelectorAll("div[id^=r_]").forEach((item) => {
  42. let clonedItem = item.cloneNode(true);
  43. if (clonedItem.querySelector(".fade")) {
  44. let star = Number(clonedItem.querySelector(".fade").innerText);
  45. if (star >= starLimit) {
  46. postMap.set(clonedItem, Number(item.querySelector(".fade").innerText));
  47. }
  48. }
  49. });
  50.  
  51. // 排序
  52. const sortMap = new Map([...postMap].sort((a, b) => b[1] - a[1]));
  53. if (sortMap.size > 0) {
  54. topEl.appendChild(cellEl);
  55. for (let [key] of sortMap) {
  56. topEl.appendChild(key);
  57. }
  58. refEl.parentNode.insertBefore(sepEl, refEl);
  59. refEl.parentNode.insertBefore(topEl, refEl);
  60. }
  61. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址