V2EX帖子盖楼显示

V2EX帖子盖楼,浏览帖子更直观!

安裝腳本?
作者推薦腳本

您可能也會喜歡 图集岛VIP破解+下载+收藏

安裝腳本
  1. // ==UserScript==
  2. // @name V2EX帖子盖楼显示
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.4
  5. // @description V2EX帖子盖楼,浏览帖子更直观!
  6. // @author why2fly@aliyun.com
  7. // @match *://www.v2ex.com/*
  8. // @icon http://www.v2ex.com/favicon.ico
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Your code here...
  16. var xuhao = $('div.cell > table > tbody > tr > td:nth-child(3) > div.fr > span').get().map(i=>i.innerHTML);/*楼层序号a[20]*/
  17. var content = $('div.cell > table > tbody > tr > td:nth-child(3) > div.reply_content').get().map(i=>i.innerHTML);/*每层内容b[20]*/
  18. var name = $('div.cell > table > tbody > tr > td:nth-child(3) > strong > a').get().map(i=>i.innerHTML);/*层主名称c[20]*/
  19.  
  20. var d = $('div.cell > table > tbody > tr > td:nth-child(3) > div.reply_content');/*每层内容obj*/
  21. var m = $('#Main > div:nth-child(4) > div[id].cell');/*楼层obj*/
  22.  
  23. var name_obj = $('div.cell > table > tbody > tr > td:nth-child(3) > strong > a');/*层主名称obj*/
  24. var louzhu = $('#Main > div:nth-child(2) > div.header > small > a')[0].innerHTML;/*楼主名称*/
  25. var youname = $('#Rightbar > div:nth-child(2) > div:nth-child(1) > table:nth-child(1) > tbody > tr > td:nth-child(3) > span > a');/*当前用户名称*/
  26. youname = youname.length?youname[0].innerHTML :null ;
  27. var guanzhu = "why2fly";/*特别关注的人*/
  28.  
  29. var deep = new Array(m.length).fill(0); /*每层的深度,默认0,如移动一级则深度加1 */ /*主要解决深度太大导致显示面太小的问题*/
  30. var maxdeep = 4;/*支持的最大堆叠深度,超过后将只右移一点点距离,可修改*/
  31. var allsamll = false;/*全部只右移一点点距离,默认关闭*/
  32.  
  33. function change_color(i,name,color)
  34. {
  35. if( name[i] == name )
  36. {
  37. name_obj[i].setAttribute('style',color);/*当前层主为楼主,标记为蓝色*/
  38. }
  39. }
  40.  
  41. /*将i层移到j层下面*/
  42. function gailou_with_deep(i,j)
  43. {
  44. if(deep[j] >= maxdeep-1)
  45. {
  46. console.log(xuhao[j]+" deep = "+ deep[j]);
  47. d[j].parentNode.parentNode.parentNode.parentNode.parentNode.append(m[i]);
  48. deep[i] = deep[j];
  49. }
  50. else
  51. {
  52. allsamll ? d[j].parentNode.parentNode.parentNode.parentNode.parentNode.append(m[i]) : d[j].append(m[i]);
  53. deep[i] = deep[j]+1;
  54. }
  55. }
  56.  
  57. var i = 1;/*从第二层开始*/
  58. while(i< m.length)
  59. {
  60. change_color(i,louzhu, 'color:blue');/*当前层主为楼主,标记为蓝色*/
  61. change_color(i,louzhu, 'color:red');/*当前层主你自己,标记为红色*/
  62. change_color(i,louzhu, 'color:yellow');/*当前层主为特别关注的人,标记为黄色*/
  63.  
  64. if(content[i].match("楼上"))
  65. {
  66. console.log(xuhao[i]+" have @楼上 #"+i);
  67. gailou_with_deep(i,i-1);
  68. i++;continue;
  69. }
  70.  
  71. var num = content[i].search(/#\d+ /);/*内容包含 #14 xxxx ,脚本认为是回复14楼的,移过去*/
  72. if(num != -1)
  73. {
  74. num = parseInt(content[i].slice(num+1));
  75. console.log(xuhao[i]+" have @ #"+num);
  76. gailou_with_deep(i,num-1);
  77. i++;continue;
  78. }
  79.  
  80. /*从当前层i往前开始逆序匹配名称,成功则移动当前层i移动到目标j层的下面 */
  81. for(var j=i-1;j>=0;j--){
  82. if(content[i].match(name[j]))
  83. {
  84. console.log(xuhao[i]+" have @"+name[j] + " #"+(j+1));
  85. gailou_with_deep(i,j);
  86. break;
  87. }
  88. }
  89. i++;
  90. }
  91. })();