generated at
モバイル環境でタイムスタンプを打てるようにするUserScript
モバイル環境では ctrl-t が使えないのが不便
Page Menuにタイムスタンプを挿入するメニューを追加するUserScript

モバイル環境かどうか判定する関数
script.js.disabled
const isMobile = () => /mobile/i.test(navigator.userAgent);

タッチ対応デバイスか判定する関数
script.js
const isTouchDevice = () => 'ontouchstart' in window;

テキストを挿入するための関数
script.js
const insertText = text => { const cursor = document.getElementById('text-input'); cursor.focus(); cursor.value = text; const event = new InputEvent('input', { bubbles: true }); cursor.dispatchEvent(event); };

ユーティリティ関数
script.js
const 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.js
if (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.disabled
if (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. に置換、ユーティリティ関数作ってそれを使用するように変更
#2025-01-13 01:15:07 動作確認完了
#2025-01-13 01:13:45 メニューに内包されているのがまどろっこしいので外に出した
#2025-01-13 00:59:12 ひとまず動作確認完了