Reddit - Open in Removeddit

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

目前為 2020-04-14 提交的版本,檢視 最新版本

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