今日のページをnavbarから開くUserScript
navbar(画面右上)にボタンを表示して、「今日のページ」を開く
日付ページ、日記ページとも
今日のページを取得してみて、内容がまだ空ならテンプレート(空行と日付リンク)を書くが、空でなければ単に開く
https://gyazo.com/041073718de5e9fdbab091bf6567db89
現在のデザインは空行数行 + 前後の日付へのリンク
空白をあらかじめ置くことで、好きに書けるスペースを確保している気持ち 真っ白なノート的な
好きに変えて下さい
(方法はわからない)
更新履歴
適当にrefactoringした
Promiseのmethod chainをasync/awaitに展開
a.click()を使う
開くタブを選べるようにした
ページ遷移をwindow.openからa.hrefに変えた
すでになにか書いてあっても日付タグがなければ挿入するようにした
UserScript
code:script.js
(() => {
const navbar = document.getElementsByClassName('navbar-menu')0; navbar.insertAdjacentHTML('beforeend',
`<li class="today-btn">
<a>
<span class="kamon kamon-pencil"></span>
</a>
</li>`);
function getDate(i) {
const d = new Date(); d.setDate(d.getDate() + i);
return [${d.getFullYear()}, ${d.getMonth() + 1}, ${d.getDate()}];
}
const projectName = scrapbox.Project.name;
const today = getDate(0);
const prev = getDate(-1);
const next = getDate(1);
const title = encodeURIComponent(${today[0]}/${today[1]}/${today[2]});
const todayPage = https://scrapbox.io/api/pages/${projectName}/${title};
const dateTag = [${prev[0]}/${prev[1]}/${prev[2]}] -> [${today[0]}/${today[1]}]/${today[2]} -> [${next[0]}/${next[1]}/${next[2]}];
const todayButton = navbar.lastElementChild;
todayButton.addEventListener('click', (e) => {
const res = await fetch(todayPage);
const json = await res.json();
const body = json.lines.every(line => !line.text.includes(dateTag)) ?
encodeURIComponent(
'\n'.repeat(8) // 書く場所
+ dateTag
+ '\n'
) : '';
const a = todayButton.getElementsByTagName('a')0; a.href = https://scrapbox.io/${projectName}/${title}?body=${body};
//a.click();
let obj = {};
for (const key in e) {
objkey = key != 'bubbles' ? ekey : false; }
const e_ = new MouseEvent(e.type, obj);
a.dispatchEvent(e_);
});
})();
開発メモ
eventはsetterをもたないらしいので、for文で書き写しつつbubblesだけfalseにして新しいイベントをつくり、そっちをdispatch もっといいやり方がありそう...
a.click()で済むのでは?takker.icon
/icons/なるほど.icontakker.icon
eventのクローンづくりとfetch処理とでPromiseしてみた 後者が圧倒的に遅いので、結局速度的には同じかsequentialのほうが少し速い感じだった
JavaScript.icon