トリプルクリック
https://gyazo.com/03690173e0ae40592d43dfdb985b8696
Cosense(Scrapbox)では、トリプルクリックで行選択ができる仕様のようです。
ページ領域の外でのトリプルクリックなら、他の動作に干渉しない(と思われます)。
このユーザースクリプトは、
ページエリアの外でトリプルクリックしたら 関数 TripleClickFlag_ON() を実行
再度ページエリアの外でトリプルクリックしたら 関数 TripleClickFlag_OFF() を実行
します。
トリプルクリックの制限時間は、0.5秒以内に設定していますが、扱いやすい時間長に調整して下さい。
なんらかのモードの切り替えを行うための操作として、ユーザースクリプトに実装しておくと便利(かも知れません)。
ページのリロードを行うとリセットされて、元のHTMLとCSSの設定に戻ります。
code:script.js
let OutsidePageTripleClickFlag = false; // 状態フラグ 初期値はOFF
let clicks = 0;
let clickTimer = null;
document.addEventListener('click', function(e) {
// マウスの左ボタンでのクリックのみを考慮
if (e.button === 0) { // 左ボタン:0 中ボタン:1 右ボタン:2
const pageElement = document.querySelector('.page');
const rect = pageElement.getBoundingClientRect();
// .pageの領域の外でクリックが行われたかどうかを判定
if (e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom) {
clicks++; // クリック数をインクリメント
// トリプルクリックを検出
if (clicks === 3) {
if (OutsidePageTripleClickFlag) {
TripleClickFlag_ON();
} else {
TripleClickFlag_OFF();
}
OutsidePageTripleClickFlag = ! OutsidePageTripleClickFlag; // 状態フラグ反転
clicks = 0;
}
// タイマーをリセット
clearTimeout(clickTimer);
clickTimer = setTimeout(function() {
clicks = 0;
}, 500); // 制限時間 0.5秒
}
}
});
TripleClickFlag_ON / TripleClickFlag_OFF モードの切り替えの例
code:script.js
function TripleClickFlag_ON() {
// ページタイトルを残して ページエリア本文部分を隠す
document.querySelectorAll('.page .line > *:not(.line-title .text)').forEach(el => {
el.style.display = 'none';
});
window.scrollTo(0, 0);
}
function TripleClickFlag_OFF() {
// 隠したページエリア本文部分をもとに戻す
document.querySelectorAll('.page .line > *:not(.line-title .text)').forEach(el => {
el.style.display = '';
});
window.scrollTo(0, 0);
}