モバイル環境でタイムスタンプを打てるようにするUserScript
モバイル環境ではctrl-tが使えないのが不便
Page Menuにタイムスタンプを挿入するメニューを追加するUserScript
区切り文字は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
/customize/mobileからtimestampを行頭に挿入するUserScript
/customize/scrapbox-insert-text
/takker/scrapbox-insert-text-2
https://github.com/takker99/scrapbox-userscript-std/blob/8fffbb23f25ecfa9c2ff9ba02ae3532d0371bce3/browser/dom/edit.ts#L160
/villagepump/scrapbox-url-customizer#642e78fb1280f00000fe90d1
/motoso/Tweetを取り込むPopup menu v2#64183879774b17000008c111
#2025-02-16 23:43:43 プロジェクトによってデリミタが違うことがあるのでwindow.COSENSE_DATE_DELIMITERを使うように変更
#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 ひとまず動作確認完了