Greasy Fork

Jira External Links Target _blank

Makes all external links in Jira issues have target="_blank" so that they open in a new tab/window

// ==UserScript==
// @name         Jira External Links Target _blank
// @namespace    http://free-side.net/tampermonkey
// @version      0.1
// @description  Makes all external links in Jira issues have target="_blank" so that they open in a new tab/window
// @author       Paul Wheeler
// @license      CC0
// @match        https://*.atlassian.net/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=atlassian.net
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  let mutationCount = 0;
  const checkForLinks = function(mutationsList, observer) {
    mutationCount++;

    // We could check the mutation list to see if it's relelvant, but... lazy
    const descriptionLinks = [...document.getElementsByClassName('ak-renderer-document')].flatMap(e => [...e.getElementsByTagName('a')]);
    for (const link of descriptionLinks) {
      if (link.target !== '_blank') {
        console.log(`[${mutationCount}] Updating target for link ${link.href}`);
        link.target = '_blank';
        link.addEventListener('click', e => {
          // prevent JavaScript event handlers from mucking things up
          e.stopPropagation();
          return false;
        });
      }
    }
  };

  const observer = new MutationObserver(checkForLinks);
  observer.observe(document.body, { attributes: false, childList: true, subtree: true });
})();