Twitterのリンクを開く時URLパラメータを削除するUserScript
例えば
使い方
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);
}