モバイル環境でタイムスタンプを打てるようにするUserScript
モバイル環境では ctrl-t
が使えないのが不便
モバイル環境かどうか判定する関数
タッチ対応デバイスか判定する関数
script.jsconst isTouchDevice = () => 'ontouchstart' in window;
テキストを挿入するための関数
script.jsconst insertText = text => {
const cursor = document.getElementById('text-input');
cursor.focus();
cursor.value = text;
const event = new InputEvent('input', { bubbles: true });
cursor.dispatchEvent(event);
};
ユーティリティ関数
script.jsconst pad = num => num.toString().padStart(2, '0');
const toYYYYMMDD = date => `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
const toHHmmss = date => `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
ボタンを追加
script.jsif (isTouchDevice()) {
const menuTitle = 'timestamp';
cosense.PageMenu.addMenu({
title: menuTitle,
icon: 'far fa-clock',
});
cosense.PageMenu(menuTitle).addItem({
title: '#YYYY-MM-DD HH:mm:ss_',
onClick: () =>
insertText(
(date => `#${toYYYYMMDD(date)} ${toHHmmss(date)} `)(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: '#YYYY-MM-DD HH:mm:ss',
onClick: () =>
insertText(
(date => `#${toYYYYMMDD(date)} ${toHHmmss(date)}`)(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: '#YYYY-MM-DD',
onClick: () =>
insertText(
(date => `#${toYYYYMMDD(date)}`)(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: '[YYYY-MM-DD]',
onClick: () =>
insertText(
(date => `[${toYYYYMMDD(date)}]`)(new Date()),
),
});
}
script.js.disabledif (isTouchDevice()) {
const menuTitle = 'timestamp';
cosense.PageMenu.addMenu({
title: 'timestamp',
icon: 'far fa-clock',
onClick: () =>
insertText(
(date => `#${toYYYYMMDD(date)} ${toHHmmss(date)} `)(new Date()),
),
});
}
References
#2025-01-13 15:31:02
scrapbox.
を
cosense.
に置換、ユーティリティ関数作ってそれを使用するように変更