scrapbox-editor-begin-edit
from /yuyasurarin/scrapbox-editor-begin-edit
キーボードから手を離さずに#text-inputにfocusをあてて編集を開始するUserScript
cursor.focus()を使う
2023-12-05
08:41:01 document.hasFocus()機能してない?
見えない要素にfocusが当たっている可能性があるか……
しゃーない。<C-i>でfocusを当てるようにしよう
08:28:37 どこにもfocusが当たってないときのみ動作するようにした
元は任意のキー操作でfocusが当たるようにしていた
これだと、Search formなど、キー入力を拾いたいところの操作も奪ってしまっていて使い物になってなかった
<Esc>押下でfocusが当たる仕様もよくない
<input>にfocusが当たっている場合のみ除外することも考えたが、他のUserScriptで別のキーボードショートカットを使っている場合、それらを阻害してしまうのを防げない
document.hasFocus()がfalseのときのみ動作させるのが無難だと判断した
https://scrapbox-bundler.vercel.app/?url=https://scrapbox.io/api/code/takker/scrapbox-editor-begin-edit/script.ts&run&bundle&minify&format=iife
$ deno check --remote -r=https://scrapbox.io https://scrapbox.io/api/code/takker/scrapbox-editor-begin-edit/script.ts
code:script.ts
import { takeCursor } from "../scrapbox-userscript-std/dom.ts";
globalThis.addEventListener("keydown", (e) => {
if (e.key !== "i" || e.shiftKey || e.altKey || e.metaKey || !e.ctrlKey) return;
if (e.isComposing) return;
const cursor = takeCursor();
if (cursor.hasFocus) return;
e.preventDefault();
cursor.focus();
});
#2023-12-05 08:43:34
#2023-11-16 08:33:19