Greasy Fork is available in English.

Tweetdeck url extander

getting over the t.co redirection

  1. // ==UserScript==
  2. // @name Tweetdeck url extander
  3. // @namespace tweetdeck.twitter.com
  4. // @description getting over the t.co redirection
  5. // @include https://tweetdeck.twitter.com/
  6. // @version 1
  7. // @grant none
  8. // ==/UserScript==
  9. (function (window) {
  10. var document = window.document;
  11. var OneTimeTrigger = function (func, delay) {
  12. var timerCountdown = 0;
  13. return function() {
  14. setTimeout(function() {
  15. timerCountdown -= 1;
  16. if (timerCountdown == 0) {
  17. func();
  18. }
  19. }, delay);
  20. timerCountdown += 1;
  21. };
  22. };
  23. var expandAllLink = function () {
  24. var expandedUrl;
  25. Array.prototype.forEach.call(document.querySelectorAll("a.url-ext:not(.url-ext-expanded)"),
  26. function (node) {
  27. if (/^http(?:s)?:\/\/t\.co\/[0-9A-Za-z]+$/g.test(node.href)) {
  28. expandedUrl = node.getAttribute("data-full-url");
  29. if (expandedUrl) {
  30. node.href = expandedUrl;
  31. }
  32. node.className += " url-ext-expanded";
  33. }
  34. });
  35. };
  36. var trigger = OneTimeTrigger(expandAllLink, 100);
  37. var MutationObserver = window.MutationObserver ? window.MutationObserver : window.WebKitMutationObserver;
  38. if (typeof MutationObserver !== "undefined") {
  39. var observer = new MutationObserver(trigger);
  40. observer.observe(document, { childList: true, subtree: true });
  41. }
  42. else {
  43. document.addEventListener("DOMNodeInserted", trigger, false);
  44. document.addEventListener("DOMSubtreeModified", trigger, false);
  45. }
  46.  
  47. })(window);