Wykop - scroll to unread comment

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

  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.5
  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]
  16. && document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
  17. .getElementsByTagName('a')[document.getElementsByClassName('nav fix-b-border')[0].getElementsByTagName('ul')[0]
  18. .getElementsByTagName('a').length-1].href.indexOf('/unreadCommentsToggle/')>0)
  19. {
  20. var nowe_komcie = document.getElementsByClassName('wblock lcontrast dC newComment');
  21. var ile_nowych = nowe_komcie.length;
  22. var aktual_poz = -1;
  23. function dodaj_button(komcie_node, ii)
  24. {
  25. if (!ile_nowych) return;
  26. var button_node = document.createElement('button');
  27. if (ii < ile_nowych - 1)
  28. {
  29. button_node.innerHTML = 'NEXT';
  30. button_node.val = ii + 1;
  31. button_node.onclick = function() {
  32. nowe_komcie[this.val].scrollIntoView(true);
  33. window.scrollBy(0, offsetFix);
  34. aktual_poz = ii + 1;
  35. }; /* button_node.onclick = function(){nowe_komcie[ii+1].scrollIntoView(true);};*/
  36. }
  37. else
  38. {
  39. button_node.onclick = function() {
  40. nowe_komcie[0].scrollIntoView(true);
  41. window.scrollBy(0, offsetFix);
  42. aktual_poz = 0;
  43. };
  44. button_node.innerHTML = 'FIRST';
  45. }
  46. komcie_node.appendChild(button_node);
  47. }
  48. for (var i = 0; i < ile_nowych; ++i)
  49. {
  50. dodaj_button(nowe_komcie[i], i);
  51. }
  52. var button_node = document.createElement('button');
  53. button_node.innerHTML = 'FIRST';
  54. button_node.onclick = function () {
  55. nowe_komcie[0].scrollIntoView(true);
  56. window.scrollBy(0, offsetFix);
  57. aktual_poz = 0;
  58. }; /* document.getElementById('comments-list-entry').appendChild(button_node);*/
  59. document.getElementById('itemsStream').insertBefore(button_node, document.getElementById('itemsStream').firstChild);
  60. function nastepny(e)
  61. {
  62. e = e || window.event;
  63. if (e.keyCode == '220' && !e.shiftKey)
  64. {
  65. aktual_poz = (aktual_poz+1)%ile_nowych;
  66. }
  67. else if (e.keyCode == '220' && e.shiftKey)
  68. { /* z shiftem jedziemy wstecz */
  69. if(aktual_poz==-1)
  70. aktual_poz = ile_nowych - 1;
  71. else
  72. aktual_poz = (ile_nowych+aktual_poz-1) % ile_nowych;
  73. }
  74. else
  75. return;
  76. nowe_komcie[aktual_poz].scrollIntoView(true);
  77. window.scrollBy(0, offsetFix);
  78. }
  79.  
  80. document.onkeydown = nastepny;
  81. }
  82. void 0;