Scrapboxで範囲選択中にIMEをオフにしたい
まとめ
「
が消えないとあまりシームレスじゃないので、使うのやめる
どうやったら消せるんだろうなぁこれ
元の入力は要らないので切り捨てたい
known issueだった
だめ
preventDefault や stopPropagation の組み合わせを変える
処理入った直後に実行してみる
Firefoxの場合、keydownの後にcompositionupdateが発生するらしい
リスナー2つくって、クロージャかなんかで状態変数でやりとりすればいいかもしれない
ああ、ダメだ、IMEオンのときはkeydownに来ないんだ
sta.js//残骸。動かん
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;
}
});
}
範囲選択しているかどうかは「popup menu出てるか」で判定する
出てたら0番目のbuttonをclick
takker.jsexport 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オンだとつかない → オフにして → つける、とかしてて面倒くさい
IME制御が無理ゲーな気がする
たぶんブラウザがセキュリティ的に許されてない