✅️scrapbox-userscript-stdにaddTextInputEventListenerを実装する
背景
結果、一旦トップページに戻ってから別のページに移る操作をしたさい、#text-inputに登録したキーバインドなどが効かなくなる問題が発生した 対策として、text-inputが消えて復活するたびにevent listenersを再登録するプログラムを作ることにした
2024-05-24
17:51:57 merged
脱線してた
17:14:25 E2Eテスト中
Streamに飛ぶと、ページがリロードされてUserScriptがリセットされてしまうようだ
これは構わない
一度も実行されていなければ、ページ遷移でlistenerを維持する
一度実行されれば削除する
2024-05-20
16:49:14 とりあえずここまで
16:39:23 実装終了
重複チェックのテストも書いた
動作確認はまだしてない
by converting all frags into a bit series
15:15:43 addTextInputEventListenerを作っていた
eventname,listener,optionsの3つ組を重複せずに管理する必要があるなあ
onceだけ特別な処理をしなければならない
呼び出されたら自前のlistener DBから消す
重複チェックを自前実装するのが楽か
今日はここまでにしよう
ただし一貫性がない場合があるので、全部のoptionをcheckするのが無難とのこと
結局使わなかった
code:E2E-test.ts
addTextInputEventListener("keydown", (e) => {
if (e.key !== "Tab") return;
const cursor = cursorLine();
if((cursor?.getElementsByClassName?.("code-block")?.length ?? 0) !== 0) return;
if((cursor?.getElementsByClassName?.("table-block")?.length ?? 0) !== 0) return;
if(popupMenu()) return;
e.preventDefault();
e.stopPropagation();
press(e.shiftKey ? "ArrowLeft" : "ArrowRight", { ctrlKey: true });
}, { once: true });