モバイル環境でタイムスタンプを打てるようにするUserScript
モバイル環境ではctrl-tが使えないのが不便
区切り文字はwindow.COSENSE_DATE_DELIMITERで定義されるものとする
スコープを限定
code:script.js
(() => {
モバイル環境かどうか判定する関数
code:script.js.disabled
const isMobile = () => /mobile/i.test(navigator.userAgent);
タッチ対応デバイスか判定する関数
code:script.js
const isTouchDevice = () => 'ontouchstart' in window;
テキストを挿入するための関数
code: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);
};
ユーティリティ関数
code:script.js
const pad = num => num.toString().padStart(2, '0');
const getYYYYMMDD = () => YYYY${window.COSENSE_DATE_DELIMITER || '-'}MM${window.COSENSE_DATE_DELIMITER || '-'}DD;
const toYYYYMMDD = (date) => ${date.getFullYear()}${window.COSENSE_DATE_DELIMITER || '-'}${pad(date.getMonth() + 1)}${window.COSENSE_DATE_DELIMITER || '-'}${pad(date.getDate())};
const toHHmmss = date => ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())};
ボタンを追加
code:script.js
if (isTouchDevice()) {
const menuTitle = 'timestamp';
cosense.PageMenu.addMenu({
title: menuTitle,
icon: 'far fa-clock',
});
cosense.PageMenu(menuTitle).addItem({
title: () => #${getYYYYMMDD()} HH:mm:ss_,
onClick: () =>
insertText(
(date => #${toYYYYMMDD(date)} ${toHHmmss(date)} )(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: () => #${getYYYYMMDD()} HH:mm:ss,
onClick: () =>
insertText(
(date => #${toYYYYMMDD(date)} ${toHHmmss(date)})(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: () => #${getYYYYMMDD()},
onClick: () =>
insertText(
(date => #${toYYYYMMDD(date)})(new Date()),
),
});
cosense.PageMenu(menuTitle).addItem({
title: () => [${getYYYYMMDD()}],
onClick: () =>
insertText(
(date => [${toYYYYMMDD(date)}])(new Date()),
),
});
}
code: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()),
),
});
}
スコープを閉じる
code:script.js
})();
References
#2025-02-16 23:43:43 プロジェクトによってデリミタが違うことがあるのでwindow.COSENSE_DATE_DELIMITERを使うように変更 #2025-01-13 15:31:02 scrapbox.をcosense.に置換、ユーティリティ関数作ってそれを使用するように変更