以下の内容はhttps://turgenev.hatenablog.com/entry/2025/10/01/221953より取得しました。


Notionの検索候補のホイール(中ボタン)クリック関連の挙動を修正するちょっとしたスクリプト

最近のTampermonkeyでEnter送信の入力欄をCtrl+Enter送信&Enter改行に変える(Discord、Google Chat、ChatGPT、Twitter(X)、Grokに対応) - turgenev’s blogとかChatGPTの変な挙動(コピー、編集)を修正するTampermonkeyスクリプト - turgenev’s blogに続くTampermonkeyスクリプトの記事です。詳細がわからなければそれらの記事も読んでください。

今回のスクリプトの内容は以下の通りです。(2025-11-27訂正: 1について、「何も入力していない際の候補」のhtml構造が若干変更され、動作についても「何かを入力した際の候補」と同一に揃えられていたため、それに応じてスクリプトを変更)

  1. Notionのページ検索の画面で、何も入力していない際の候補(最近使用したページ)を普通に左クリックしたときは正しくそのページに移動できるが、ホイールクリックしても(何もないところで押したかのように)スクロールのマークが出るだけで新しいタブでページが開くことはない。これを修正して新しいタブで開くようにする。
  2. Notionのページ検索の画面で、検索欄に何かを入力した際の候補をホイールクリックすると、新しい2つのタブが作成されてそのページが開く。これを修正して1つしか出ないようにする。
  3. 通常はAlt+Shift+Lでブロックへのリンクがコピーできるが、これとは別にAlt+Lを押したときにブロックへのタイトルをリンクテキストとしたMarkdown形式のリンク([テキスト](https://www.notion.so/username/xxxxxxxxx))がコピーされるようにする。
// ==UserScript==
// @name Notion Fixes
// @namespace https://your.namespace/
// @version 1.0
// @description Fix some notion behavior
// @author YourName
// @match https://www.notion.so/*
// @grant GM_setClipboard
// ==/UserScript==

(function() {
'use strict';
document.addEventListener('keydown', function(event) {
if (event.altKey && event.key.toLowerCase() === 'l') { //Alt+L
event.preventDefault();

const selectedBlock = document.querySelector('div[data-block-id]:has(> div.notion-selectable-halo)');
console.log(selectedBlock)
if (selectedBlock) {
const blockText = `[${selectedBlock.innerText}](${window.location.href}#${selectedBlock.getAttribute("data-block-id").replace(/-/g,"")})`
if (blockText) {
navigator.clipboard.writeText(blockText).then(() => {
console.log('Block text copied to clipboard:', blockText);
}).catch(err => {
console.error('Failed to copy text:', err);
});
} else {
console.log('No text found in the selected block.');
}
} else {
console.log('No block is currently selected.');
}
}
});
function setupElem(editor) {
editor.addEventListener("auxclick", function (e) {
if (e.button === 1) {
e.stopPropagation();
}
});
}
/*
//2025-11-27 不使用
function setupElem2(editor) {
editor.addEventListener("mousedown", function (e) {
if (e.button === 1) {
e.preventDefault();
e.stopPropagation();
const fakeEvent = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window,
button: 0,
ctrlKey: true,
});
e.target.dispatchEvent(fakeEvent);
}
});
}*/
let selector = 'div.notion-search-menu > div > div > div > div > div > section > div > div > div > a';//検索中の候補
let selector2 = 'div.notion-search-menu > div > div > div > div > div > a > div[role="option"]';//最初から出ている候補//2025-11-27 セレクタ変更
const observer = new MutationObserver(() => {
const elems = document.querySelectorAll(selector);
elems.forEach(elem => {
setupElem(elem);
});
const elems2 = document.querySelectorAll(selector2);
elems2.forEach(elem2 => {
setupElem(elem2);//2025-11-27 関数変更
});
});

observer.observe(document.body, { childList: true, subtree: true });
})();

どこがどの機能かは見ればわかると思うので、適宜カットするなどしてお使いください。




以上の内容はhttps://turgenev.hatenablog.com/entry/2025/10/01/221953より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14