generated at
Twitterのリンクを開く時URLパラメータを削除するUserScript
Twitterのリンクを開く時、/villagepump/ツイートのURLに書かれているようなURLパラメータを自動的に削除するUserScript

例えば
↑のURLをクリックしたら、https://twitter.com/nishio/status/1554346909061758976が開かれるようになる

使い方
1. 下のリンクをクリックしてUserScriptを生成する
2. 生成したコードを自分のページに貼り付ける
3. 自動的に実行されるようになる
パラメータ付きのリンクをクリックしても、パラメータ無しの状態で開かれるようになる

ソースコード
script.ts
/// <reference no-default-lib="true" /> /// <reference lib="esnext" /> /// <reference lib="dom" /> /// <reference lib="dom.iterable" /> import {Scrapbox} from "https://raw.githubusercontent.com/scrapbox-jp/types/0.3.6/scrapbox.ts" declare const scrapbox: Scrapbox; import { addCursorChangeEventListener } from "./event.ts"; function removeParamsForTwitter() { const twitterLinks: NodeListOf<HTMLAnchorElement> = document.querySelectorAll( '.page a[href^="https://twitter.com/"]', ); for (const link of twitterLinks) { link.href = link.href.replace(/^(.*)\?.*/, "$1"); } } removeParamsForTwitter(); scrapbox.on("lines:changed", removeParamsForTwitter); addCursorChangeEventListener(removeParamsForTwitter);

event.ts
event.ts
/// <reference no-default-lib="true" /> /// <reference lib="esnext" /> /// <reference lib="dom" /> const eventHandlers: MutationCallback[] = []; let cursorChangeObserver: MutationObserver | undefined; export function addCursorChangeEventListener(callback: MutationCallback) { /** * 初期化用関数 * @return {boolean} 成功したならtrue、失敗したらfalse */ function init(): boolean { const cursor = document.querySelector(".cursor"); if (cursor === null) return false; const options: MutationObserverInit = { attributes: true, attributeFilter: ["style"], }; cursorChangeObserver = new MutationObserver(( mutation: MutationRecord[], observer: MutationObserver, ) => eventHandlers.forEach((e) => e(mutation, observer))); cursorChangeObserver.observe(cursor, options); return true; } if (cursorChangeObserver === undefined) if (!init()) return; eventHandlers.push(callback); }