Hacker News Infinite Scroll

Adds infinite scroll to HackerNews

目前为 2019-10-06 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @description Adds infinite scroll to HackerNews
  3. // @name Hacker News Infinite Scroll
  4. // @namespace Violentmonkey Scripts
  5. // @match https://news.ycombinator.com/
  6. // @version 1.0.0
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. const xhr = new XMLHttpRequest();
  11. const regex = new RegExp(/<center>.*(<table id="hnmain".*)<\/center>/gms);
  12. let count = 2;
  13. window.onscroll = function() {
  14. if ((window.innerHeight + Math.ceil(window.pageYOffset)) >= document.body.offsetHeight) {
  15. let testResponse;
  16. let parsed;
  17. xhr.open('GET', `https://news.ycombinator.com/news?p=${count}`);
  18. xhr.onload = function() {
  19. if (xhr.status === 200) {
  20. testResponse = xhr.responseText;
  21. parsed = regex.exec(testResponse);
  22. let newDiv = document.createElement('div');
  23. newDiv.innerHTML = parsed[1];
  24. let table = document.querySelector('table.itemlist');
  25. let tableMore = [...table.querySelectorAll('tr')].slice(-2)[0];
  26. [...newDiv.querySelector('tr#pagespace + tr tbody').querySelectorAll('tr')].slice(0, 90).forEach((newTr, idx) => {
  27. tableMore.parentNode.insertBefore(newTr, tableMore);
  28. })
  29. count++;
  30. }
  31. else {
  32. alert('Request failed. Returned status of ' + xhr.status);
  33. }
  34. };
  35. xhr.send();
  36. }
  37. };