Hatena Bookmark Stars Highlighter

はてなブックマークの個別ブックマークページで、スターの数に応じてブックマークコメントをハイライトさせます。

目前为 2020-03-02 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Hatena Bookmark Stars Highlighter
  3. // @description はてなブックマークの個別ブックマークページで、スターの数に応じてブックマークコメントをハイライトさせます。
  4. // @namespace knoa.jp
  5. // @include https://b.hatena.ne.jp/entry/*
  6. // @version 1.0.4
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. /*
  11. [possible]
  12. トップ10に限定されるのがもったいないので11以降も状況に応じた数だけ表示させたい
  13. 「新しいブコメなのにスターを集めている」のも新タブか何かで目立たせたい
  14. 古いブクマでtop10がない場合も補いたい
  15. URL /s/なしがあればマージまたはせめて案内リンク
  16. 自分にスターを付けてくれた人によるブクマも目立たせたいかも
  17. 自分のお気に入りブクマカも???
  18. */
  19.  
  20. (function () {
  21. let as, i;
  22. // ついでに一仕事
  23. // サイト内ブクマリストを人気順にする。
  24. if (as = document.querySelectorAll('.entry-info-domain a')) {
  25. for (i = 0; i < as.length; i++) {
  26. as[i].href = as[i].href + '&sort=count';
  27. }
  28. }
  29. // ここから本作業
  30. // グリモン起動のほうが早いので、addEventListener('load')にしないとダメっぽい
  31. window.addEventListener('load', function () {
  32. let spans, i;
  33. // 頻発するMutationObserverよりsetIntervalのほうがマシということで。
  34. // スターサーバーが遅いことも多々ある。よってIntervalでよい。
  35. // *一度確認したらフラグ立てる方式は読み込み遅延やコンテナが開かれたときに注意が必要
  36. let timer = window.setInterval(function () {
  37. spans = document.querySelectorAll('.entry-comment span.js-list-star-container');
  38. for (i = 0; spans && spans[i]; i++) {
  39. switch(true){
  40. case (32 <= spans[i].getElementsByTagName('a').length):
  41. spans[i].parentNode.parentNode.parentNode.style.background = '#ffff00';
  42. break;
  43. case (16 <= spans[i].getElementsByTagName('a').length):
  44. spans[i].parentNode.parentNode.parentNode.style.background = '#ffff80';
  45. break;
  46. case (8 <= spans[i].getElementsByTagName('a').length):
  47. spans[i].parentNode.parentNode.parentNode.style.background = '#ffffc0';
  48. break;
  49. case (4 <= spans[i].getElementsByTagName('a').length):
  50. spans[i].parentNode.parentNode.parentNode.style.background = '#ffffe0';
  51. break;
  52. case (2 <= spans[i].getElementsByTagName('a').length):
  53. spans[i].parentNode.parentNode.parentNode.style.background = '#fffff0';
  54. break;
  55. }
  56. }
  57. /* 16スター以上のまとまり */
  58. spans = document.querySelectorAll('.entry-comment span.hatena-star-inner-count'); //16<
  59. for (i = 0; spans && spans[i]; i++) {
  60. switch(true){
  61. case (32 <= spans[i].textContent):
  62. spans[i].parentNode.parentNode.parentNode.parentNode.style.background = '#ffff00';
  63. break;
  64. default:
  65. spans[i].parentNode.parentNode.parentNode.parentNode.style.background = '#ffff80';
  66. break;
  67. }
  68. }
  69. }, 1000);
  70. });
  71. }) ();

QingJ © 2025

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