Shorten Medium URL

Shorten URL in medium.com

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Shorten Medium URL
// @namespace    https://github.com/FlandreDaisuki
// @version      0.1
// @description  Shorten URL in medium.com
// @author       FlandreDaisuki
// @match        https://medium.com/*
// @grant        none
// @noframes
// @run-at       document-start
// ==/UserScript==

const shorten = () => {
  if (location.pathname.match(/^\/([^/]*)\/.*-(\w+)$/)) {
    const url = new URL(location.href);
    url.search = '';
    url.pathname = url.pathname.replace(/^\/([^/]*)\/.*-(\w+)$/, '/$1/$2');

    history.replaceState({}, document.title, url.href.replace(url.origin, ''));
  }
};

window.observer = new MutationObserver(shorten);

window.addEventListener('load', shorten);

window.addEventListener('beforeunload', () => {
  window.observer.disconnect();
});

document.addEventListener('DOMContentLoaded', () => {
  const rootEl = document.getElementById('container');
  const config = { childList: true };
  window.observer.observe(rootEl, config);
});