Scrapboxで範囲選択中にIMEをオフにしたい
まとめ
「
が消えないとあまりシームレスじゃないので、使うのやめる- どうやったら消せるんだろうなぁこれ
元の入力は要らないので切り捨てたい
- known issueだった
- だめ
- preventDefault や stopPropagation の組み合わせを変える
- 処理入った直後に実行してみる
- モダンブラウザにおけるキー入力のキャンセル - Qiita
- Firefoxの場合、keydownの後にcompositionupdateが発生するらしい
- リスナー2つくって、クロージャかなんかで状態変数でやりとりすればいいかもしれない
- ああ、ダメだ、IMEオンのときはkeydownに来ないんだ
//残骸。動かん
export function brackettingAlways() {
document.addEventListener('keydown', e => {
const eData = e.data
console.log(e)
const buttons = document.getElementsByClassName('popup-menu')
?.[0]?.getElementsByClassName('button')
if (!buttons) return; // そもそもpopup menuがなかったら何もしない
if (eData.length === 0) return;
switch(eData.split('').pop()) {
case '「':
document.getElementsByClassName('button link-button')?.[0]?.click();
break;
default:
break;
}
});
document.addEventListener('compositionupdate', e => {
const eData = e.data
console.log(e)
const buttons = document.getElementsByClassName('popup-menu')
?.[0]?.getElementsByClassName('button')
if (!buttons) return; // そもそもpopup menuがなかったら何もしない
if (eData.length === 0) return;
switch(eData.split('').pop()) {
case '「':
document.getElementsByClassName('button link-button')?.[0]?.click();
break;
default:
break;
}
});
}
[thk(thk.md) /takker/IME onの時、キー入力をScrapboxに渡すUserScript]
export function execute() {
document.addEventListener('compositionupdate', e => {
const buttons = document.getElementsByClassName('popup-menu')
?.[0]?.getElementsByClassName('button')
if (!buttons) return; // そもそもpopup menuがなかったら何もしない
if (e.data.length === 0) return;
switch(e.data.split('').pop()) {
case '「':
e.preventDefault();
e.stopPropagation();
document.getElementsByClassName('button link-button')?.[0]?.click();
break;
default:
break;
}
});
}
やりたいこと
- 範囲選択中はほぼリンクをつける
- IMEオンだとつかない → オフにして → つける、とかしてて面倒くさい
- UserScriptでできないかしら
- IME制御が無理ゲーな気がする
- たぶんブラウザがセキュリティ的に許されてない