Reddit - Open in Removeddit

Open a post or comment's Removeddit page in a new tab

目前为 2019-07-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Reddit - Open in Removeddit
  3. // @description Open a post or comment's Removeddit page in a new tab
  4. // @author James Skinner <spiralx@gmail.com> (http://github.com/spiralx)
  5. // @namespace http://spiralx.org/
  6. // @version 2.1.0
  7. // @icon64 data:image/png;base64,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
  8. // @match *://*.reddit.com/r/*/comments/*
  9. // @grant none
  10. // @run-at document-end
  11. // @require https://unpkg.com/jquery@3/dist/jquery.min.js
  12. // ==/UserScript==
  13.  
  14. /**
  15.  
  16. ## Changelog
  17.  
  18. #### 2.1.0 (03.07.2019)
  19. * Shift-click on "[removed]" will open Removeddit for deleted comments
  20.  
  21. #### 2.0.0 (03.07.2019)
  22. * Add Removeddit link to post buttons at top of page
  23. * Changed name and description to match functionality
  24. * Fixed icon metadata to use optimisied Reddit logo
  25. * Minor tidying up of code
  26. * Uploaded as a new user script to Greasyfork
  27.  
  28. #### 1.2.1 (03.06.2019)
  29. * Merged with other copy of the script and updated the version to 1.2.1
  30. * Added timeout before opening Removeddit to prevent a new window being opened
  31.  
  32. #### 1.2.0 (24.05.2019)
  33. * Removed button in RES floating toolbar
  34. * Holding shift when clicking perma-link on a comment opens it in Removeddit
  35.  
  36. #### 1.1.0 (11.09.2018)
  37. * Add a "removeddit-link" to each comment
  38.  
  39. #### 1.0.0 (13.07.2018)
  40. * Switched to watcher library instead of mutation-summary
  41.  
  42. #### 0.1.0 (19.06.2018)
  43. * Initial version
  44.  
  45. ## Notes
  46.  
  47. The original user script:
  48.  
  49. https://greasyfork.org/en/scripts/370257-reddit-add-removeddit-link
  50.  
  51. */
  52.  
  53. /* jshint asi: true, esnext: true, laxbreak: true */
  54. /* global jQuery */
  55.  
  56. ; ($ => {
  57. 'use strict'
  58.  
  59. // --------------------------------------------------------------------
  60.  
  61. function getRemovedditUrl (redditUrl) {
  62. const url = new URL(redditUrl)
  63. url.host = 'removeddit.com'
  64. return url.toString()
  65. }
  66.  
  67. // --------------------------------------------------------------------
  68.  
  69. function openRemoveddit (removedditUrl) {
  70. window.setTimeout(() => {
  71. window.open(removedditUrl, '_blank')
  72. }, 100)
  73. }
  74.  
  75. // --------------------------------------------------------------------
  76.  
  77. $(`.thing.link .buttons .first`).each(function () {
  78. const removedditUrl = getRemovedditUrl(this.children[ 0 ].href)
  79.  
  80. $(`<li><a href="${removedditUrl}" target="_blank">removeddit</a></li>`)
  81. .insertAfter(this)
  82. })
  83.  
  84. // --------------------------------------------------------------------
  85.  
  86. $('body')
  87. .on('click', 'a[data-event-action = "permalink"]', function (event) {
  88. if (!event.shiftKey) {
  89. return
  90. }
  91.  
  92. openRemoveddit(getRemovedditUrl(this.href))
  93.  
  94. return false
  95. })
  96. .on('click', '.thing.deleted > .entry > .usertext', function (event) {
  97. if (!event.shiftKey) {
  98. return
  99. }
  100.  
  101. const permalink = location.origin + $(this).closest('.thing').data('permalink')
  102.  
  103. openRemoveddit(getRemovedditUrl(permalink))
  104.  
  105. return false
  106. })
  107.  
  108. })(jQuery)
  109.  
  110. jQuery.noConflict(true)