Twitterのリンクを開く時URLパラメータを削除するUserScript
例えば
使い方
1. 下のリンクをクリックしてUserScriptを生成する
2. 生成したコードを自分のページに貼り付ける
3. 自動的に実行されるようになる
パラメータ付きのリンクをクリックしても、パラメータ無しの状態で開かれるようになる
ソースコード
code:script.ts
/// <reference no-default-lib="true" />
/// <reference lib="esnext" />
/// <reference lib="dom" />
/// <reference lib="dom.iterable" />
declare const scrapbox: Scrapbox;
import { addCursorChangeEventListener } from "./event.ts";
function removeParamsForTwitter() {
const twitterLinks: NodeListOf<HTMLAnchorElement> = document.querySelectorAll(
);
for (const link of twitterLinks) {
link.href = link.href.replace(/^(.*)\?.*/, "$1");
}
}
removeParamsForTwitter();
scrapbox.on("lines:changed", removeParamsForTwitter);
addCursorChangeEventListener(removeParamsForTwitter);
event.ts
code: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,
};
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);
}