scrapbox-insert-text
Next version: scrapbox-insert-text-2
/icons/hr.icon
/customize/scrapbox-insert-textに移動した
2021-01-10 19:41:15 /ci7lus/tweet-card-upload-3#5f781d65ae0f140000478016の方法にした
コードがsimpleになった
2020-12-30 17:04:44
mobile版scrapboxでも動作するようにした
document.execCommand('insertText')はAndroid版Chromeで機能しないが、Firefoxで使用していたコードは機能するみたい
2020-12-24 04:23:51
cursorを渡さなくても挿入できるようにした
2020-12-23 02:11:19
isFirefox()を短く書き換えた
isFirefox()を関数の外に出した
多分関数内だと毎呼び出しごとに生成を繰り返すことになってしまう?
既知の問題
scrapboxの自動挿入の影響を受けてしまう
e.g. 引用文中で改行を挿入しようとすると、勝手に先頭に> が入ってしまう
対策
\nをEnterキーで代行する
/icons/hr.icon
scrapboxで現在のcursorの位置にテキストを入力するUserScript
引数
text: 入力したいテキスト
cursor: テキストを入力する<textarea>
scrapboxなら#text-input
不要になった
code:script.js
import {scrapboxDOM} from '../scrapbox-dom-accessor/script.js';
export function insertText(text) {
const cursor = scrapboxDOM.textInput;
cursor.focus();
//if (isFirefox()) {
ここ妙に回りくどいことをしている気がするんだよなあtakker.icon
/ci7lus/tweet-card-upload-3#5f781d65ae0f140000478016はもっとsimpleに書いている
References
HTMLTextAreaElement - Web API | MDN
selection - Web API | MDN
2021-01-10 19:41:39 書き直した
code:script.js
cursor.value = typeof text === 'object' ?
text.text : // 以前の形式の引数への対応
text;
const uiEvent = document.createEvent('UIEvent');
uiEvent.initEvent('input', true, false);
cursor.dispatchEvent(uiEvent);
//} else {
// document.execCommand('insertText', false, text);
//}
}
テストコード
code:js
import('/api/code/takker/scrapbox-insert-text/test1.js');
code:test1.js
import {insertText} from '../scrapbox-insert-text/script.js';
import {scrapboxDOM} from '../scrapbox-dom-accessor/script.js';
window.insertText = insertText;
scrapboxDOM.textInput.addEventListener('change', e => console.log(e));
#2021-03-14 16:32:13
#2021-03-13 13:36:56
#2021-02-26 13:56:08
#2021-01-10 15:55:49
#2021-01-01 10:20:53
#2020-12-30 17:05:39
#2020-12-28 14:05:07
#2020-12-24 04:25:06
#2020-12-23 02:13:28
#2020-12-17 03:12:46
#2020-11-29 12:35:47