Subdue Metafilter Titles

Makes titles on the Metafilter front page smaller, and moves them to the "posted by" line.

当前为 2014-05-24 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Subdue Metafilter Titles
  3. // @namespace http://example.com/SubdueMetafilterTitles
  4. // @description Makes titles on the Metafilter front page smaller, and moves them to the "posted by" line.
  5. // @include http://www.metafilter.com/
  6. // @include http://www.metafilter.com/*?page=*
  7. // @include http://ask.metafilter.com/
  8. // @include http://ask.metafilter.com/*?page=*
  9. // @include http://metatalk.metafilter.com/
  10. // @include http://metatalk.metafilter.com/*?page=*
  11. // @version 1
  12. // ==/UserScript==
  13.  
  14. var posttitleDivSnap = document.evaluate(
  15. "//div[contains(concat(' ', @class, ' '), ' posttitle ')]",
  16. document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  17. for (var i = 0; i < posttitleDivSnap.snapshotLength; i++) {
  18. var posttitleDiv = posttitleDivSnap.snapshotItem(i);
  19.  
  20. var posttitleLinkSnap = document.evaluate("a", posttitleDiv,
  21. null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  22. if (posttitleLinkSnap.snapshotLength != 1) {
  23. continue;
  24. }
  25. var posttitleLink = posttitleLinkSnap.snapshotItem(0);
  26. var metafilterIndex = posttitleLink.href.indexOf("metafilter.com");
  27. if (metafilterIndex < 0) {
  28. continue;
  29. }
  30. var relativeLink = posttitleLink.href.substring(metafilterIndex + 14);
  31.  
  32. var smallcopyLinksToSameSnap = document.evaluate(
  33. "//span[contains(concat(' ', @class, ' '), ' smallcopy ')]" +
  34. "//a[@href='" + relativeLink + "']",
  35. document, null,
  36. XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  37.  
  38. for (var j = 0; j < smallcopyLinksToSameSnap.snapshotLength; ++j) {
  39. var smallcopyLinkToSame = smallcopyLinksToSameSnap.snapshotItem(j);
  40. var parentSpan = smallcopyLinkToSame.parentNode;
  41. if (parentSpan.innerHTML.indexOf("posted by") == 0) {
  42. parentSpan.innerHTML = "<em>" + posttitleLink.innerHTML + "</em>" +
  43. "<br/>" + parentSpan.innerHTML;
  44. posttitleDiv.parentNode.removeChild(posttitleDiv);
  45. break;
  46. }
  47. }
  48. }