贴吧原名

显示贴吧原用户名和快捷贴吧搜索

目前为 2017-07-20 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 贴吧原名
  3. // @author Sjmr
  4. // @include *://tieba.baidu.com/*
  5. // @version 1.5.1
  6. // @run-at document-start
  7. // @description 显示贴吧原用户名和快捷贴吧搜索
  8. // @icon http://tieba.baidu.com/favicon.ico
  9. // @namespace https://greasyfork.org/users/23790
  10. // @grant GM_registerMenuCommand
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // ==/UserScript==
  14.  
  15.  
  16. function Menu(){
  17. var n = ["替换昵称", "使用默认"];
  18. var r = GM_getValue('replaceNick', false);
  19. var m = r ? n[1] : n[0];
  20. GM_registerMenuCommand(m, function (){
  21. var replaceNick = r ? false : true;
  22. GM_setValue('replaceNick', replaceNick);
  23. location.reload();
  24. }, null);
  25. }
  26.  
  27. function checkPost(){
  28. if (document.getElementsByClassName('user_post_li').length) return;
  29. var users = document.getElementsByClassName('p_author_name');
  30. for (var i = 0; i < users.length; i ++){
  31. var id = JSON.parse(users[i].getAttribute('data-field')).un;
  32. if (GM_getValue('replaceNick', false)) users[i].innerHTML = id;
  33. else users[i].parentNode.outerHTML += id != users[i].innerHTML ?
  34. '<li style="color:#797c80;" class="user_post_li">[' + id + ']</li>' : '';
  35. }
  36. }
  37.  
  38. function checkComment(){
  39. var at = document.getElementsByClassName('at');
  40. for (var i = 0; i < at.length; i ++){
  41. if (at[i].innerHTML.search('@') != -1) continue;
  42. var a = at[i].getAttribute('username');
  43. at[i].innerHTML = decodeURIComponent(a);
  44. }
  45. }
  46.  
  47. function checkThread(){
  48. if (!document.getElementById('thread_list')) return;
  49. var users = document.getElementsByClassName('frs-author-name');
  50. for (var i = 0; i < users.length; i ++){
  51. users[i].innerHTML = JSON.parse(users[i].getAttribute('data-field')).un;
  52. }
  53. }
  54.  
  55. function showCard(n){
  56. n ++; if (n > 10) return;
  57. setTimeout(function(){
  58. var user = document.querySelector('a.userinfo_username');
  59. if (!user) {showCard(n); return;}
  60. var un = user.href.split('=')[1].split('&')[0];
  61. var id = decodeURIComponent(un);
  62. var bar = encodeURIComponent(document.getElementById('wd1').value);
  63. var link1 = bar ? '<a href="/f/search/ures?ie=utf-8&kw=' + bar + '&qw=&sm=1&un=' + un + '" target="_blank">吧内搜</a> | ' : '';
  64. var link2 = '<a href="/f/search/ures?ie=utf-8&kw=&qw=&sm=1&un=' + un + '" target="_blank">全吧搜</a>';
  65. if (user.parentNode.innerHTML.search('top:130px') == -1){
  66. var search = document.createElement('div');
  67. user.parentNode.appendChild(search);
  68. search.outerHTML = '<div style="position:absolute;right:5px;top:130px;font-size:12px;float:left;">' + link1 + link2 + '</div>';
  69. }
  70. if (user.parentNode.innerHTML.search('<br>') == -1){
  71. user.outerHTML += '<br><span style="color:#797c80; font-size:14px;">@' + id + '</span>';
  72. }
  73. }, 200);
  74. }
  75.  
  76. document.addEventListener('DOMContentLoaded', function(){
  77. Menu();
  78. var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
  79. if (MutationObserver){
  80. var post = document.getElementById('j_p_postlist');
  81. var thread = document.getElementById('content');
  82. new MutationObserver(function(mutations){
  83. if (mutations.some(function(m){return (m.addedNodes.length == 1 && m.addedNodes[0].id == 'user_visit_card');})) showCard(0);
  84. }).observe(document.body, {childList: true});
  85. if (thread && GM_getValue('replaceNick', false)){
  86. new MutationObserver(function(mutations){
  87. if (mutations.some(function(m){return (m.target.className == ' j_thread_list clearfix');})) setTimeout(checkThread, 200);
  88. }).observe(thread, {attributes: true, subtree: true});
  89. }
  90. if (post){
  91. checkPost();
  92. new MutationObserver(checkPost).observe(post, {childList: true});
  93. if (!GM_getValue('replaceNick', false)) return;
  94. new MutationObserver(function(mutations){
  95. if (mutations.some(function(m){return (m.addedNodes.length > 1);})) setTimeout(checkComment, 200);
  96. }).observe(post, {childList: true, subtree: true});
  97. }
  98. }
  99. });
  100.