Wykop - scroll to unread comment

Scrolls window to first/next/prev unread comment @ wykop.pl

当前为 2014-07-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Wykop - scroll to unread comment
  3. // @description Scrolls window to first/next/prev unread comment @ wykop.pl
  4. // @namespace Wykop scripts
  5. // @include http://www.wykop.pl/link/*
  6. // @version 1.4
  7. // @license MIT License
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var offsetFix = 0; /* poeksperymentowac, jesli przewija za mało lub za duzo */
  12.  
  13. if(document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
  14. .getElementsByTagName('a')[document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
  15. .getElementsByTagName('a').length-1].href.indexOf('/unreadCommentsToggle/')>0)
  16. {
  17. var nowe_komcie = document.getElementsByClassName('wblock lcontrast dC newComment');
  18. var ile_nowych = nowe_komcie.length;
  19. var aktual_poz = -1;
  20. function dodaj_button(komcie_node, ii)
  21. {
  22. if (!ile_nowych) return;
  23. var button_node = document.createElement('button');
  24. if (ii < ile_nowych - 1)
  25. {
  26. button_node.innerHTML = 'NEXT';
  27. button_node.val = ii + 1;
  28. button_node.onclick = function() {
  29. nowe_komcie[this.val].scrollIntoView(true);
  30. window.scrollBy(0, offsetFix);
  31. aktual_poz = ii + 1;
  32. }; /* button_node.onclick = function(){nowe_komcie[ii+1].scrollIntoView(true);};*/
  33. }
  34. else
  35. {
  36. button_node.onclick = function() {
  37. nowe_komcie[0].scrollIntoView(true);
  38. window.scrollBy(0, offsetFix);
  39. aktual_poz = 0;
  40. };
  41. button_node.innerHTML = 'FIRST';
  42. }
  43. komcie_node.appendChild(button_node);
  44. }
  45. for (var i = 0; i < ile_nowych; ++i)
  46. {
  47. dodaj_button(nowe_komcie[i], i);
  48. }
  49. var button_node = document.createElement('button');
  50. button_node.innerHTML = 'FIRST';
  51. button_node.onclick = function () {
  52. nowe_komcie[0].scrollIntoView(true);
  53. window.scrollBy(0, offsetFix);
  54. aktual_poz = 0;
  55. }; /* document.getElementById('comments-list-entry').appendChild(button_node);*/
  56. document.getElementById('itemsStream').insertBefore(button_node, document.getElementById('itemsStream').firstChild);
  57. function nastepny(e)
  58. {
  59. e = e || window.event;
  60. if (e.keyCode == '220' && !e.shiftKey)
  61. {
  62. aktual_poz = (aktual_poz+1)%ile_nowych;
  63. }
  64. else if (e.keyCode == '220' && e.shiftKey)
  65. { /* z shiftem jedziemy wstecz */
  66. if(aktual_poz==-1)
  67. aktual_poz = ile_nowych - 1;
  68. else
  69. aktual_poz = (ile_nowych+aktual_poz-1) % ile_nowych;
  70. }
  71. else
  72. return;
  73. nowe_komcie[aktual_poz].scrollIntoView(true);
  74. window.scrollBy(0, offsetFix);
  75. }
  76.  
  77. document.onkeydown = nastepny;
  78. }
  79. void 0;