LGM Comment Browser

Browse nested LGM comments chronologically

当前为 2015-01-14 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name LGM Comment Browser
  3. // @namespace http://niko.cat/
  4. // @version 0.1
  5. // @description Browse nested LGM comments chronologically
  6. // @match http://www.lawyersgunsmoneyblog.com/*
  7. // @copyright 2014+, You
  8. // ==/UserScript==
  9.  
  10. var comments = jQuery('li.comment');
  11.  
  12. // ids are formatted as 'comment-<id>'
  13. function parseId(id) {
  14. return parseInt(id.substring(8));
  15. }
  16.  
  17. var ids = comments.map(function() { return parseId(this.id); }).get();
  18. var sortedIds = ids.slice();
  19. sortedIds.sort(function(a, b) { return a - b; });
  20. var sortedPos = {};
  21. for (var i = 0; i < sortedIds.length; ++i) {
  22. sortedPos[sortedIds[i]] = i;
  23. }
  24.  
  25. var hoverbox = jQuery('<span id="hoverbox" style="position:relative; float:right">' +
  26. '<span style="position:absolute">' +
  27. '\xa0<a class="prev-link" href="#">☜︎</a>' +
  28. '\xa0<a class="up-link" href="#">☝︎︎</a>' +
  29. '\xa0<a class="next-link" href="#">☞︎︎</a>' +
  30. '</span>' +
  31. '</span>');
  32.  
  33. function hover() {
  34. jQuery('#hoverbox').remove();
  35. var body = jQuery(this).closest('.comment-body');
  36. var chain = jQuery(this).parents('li.comment');
  37. var comment = chain.first();
  38. var depth = chain.length;
  39. var id = parseId(comment[0].id);
  40. var index = sortedPos[id];
  41. var prev = sortedIds[((index == 0) ? (sortedIds.length) : (index)) - 1];
  42. var next = sortedIds[(index + 1) % sortedIds.length];
  43. var up = comment.parent().closest('li.comment');
  44. up = (up.length) ? parseId(up[0].id) : id;
  45. jQuery(hoverbox)
  46. .children().css('right', ((8 - depth) * 16) + 'px').end()
  47. .find('a.prev-link').attr('href', '#comment-' + prev).end()
  48. .find('a.up-link').attr('href', '#comment-' + up).end()
  49. .find('a.next-link').attr('href', '#comment-' + next).end();
  50. body.find('div.comment-author').append(hoverbox);
  51. }
  52.  
  53. function unhover() {
  54. jQuery('#hoverbox').remove();
  55. }
  56.  
  57. jQuery(document).delegate('.comment-body', 'mouseenter', hover);
  58. jQuery(document).delegate('.comment-body', 'mouseleave', unhover);