未読のページにランダムジャンプするUserScript:ページを開かずに未読を判定&PageMenuのItemにログを表示するver
from 未読のページにランダムジャンプするUserScript
ページを開かずに未読を判定&PageMenuのItemにログを表示するver
未読かどうかをページを開くことなく判別すると、ページが切り替わらなくてランダム報酬感がないので、Itemに表示してみることにしたw
未読のページにランダムジャンプするUserScript#602284e675892100009913c2
code:script.js
const jumpToUnreadPage = 'Jump to an unread page';
scrapbox.PageMenu.addMenu({
title: jumpToUnreadPage,
image: 'https://gyazo.com/f74d4fc373248fb2abac31ff1f69b482/raw',
onClick: async () => {
const project = scrapbox.Project.name;
const pages = scrapbox.Project.pages.filter(
page => page.exists && page.title !== scrapbox.Page.title
);
const getNextPage = async () => {
const title = pagesMath.floor(Math.random() * pages.length).title;
const nextPage = await fetch(/api/pages/${project}/${encodeURIComponent(title)});
return await nextPage.json();
}
const menu = scrapbox.PageMenu(jumpToUnreadPage);
menu.removeAllItems();
menu.emitChange();
let count = 1;
while (true) {
const nextPage = await getNextPage();
const msg = ${count}: /${project}/${nextPage.title};
menu.addItem({ title: msg, onClick: () => {} });
console.log(msg);
const unreadLine = nextPage.lines.find(line => nextPage.lastAccessed < line.updated);
if (!unreadLine) {
count++;
continue;
}
SPAを維持してページ遷移するために、location.hrefではなく<a rel="route">を使ってジャンプするようにした
ただの<a>で十分だった未読のページにランダムジャンプするUserScript:ページを開かずに未読を判定&PageMenuのItemにログを表示するver#60d891991280f000002e1261
code:script.js
const a = document.createElement('a');
a.href = ./${encodeURIComponent(nextPage.title)}#${unreadLine.id};
document.body.appendChild(a);
a.click();
a.remove();
return;
}
},
});
こんな手があるのかyosider.icon
軽くなった
rel="route"ってどういう意味なんでしょうか。。
これいらないみたいですtakker.icon
<a>をどこかのDOMに挿入してからクリックすれば、SPAを維持してページ遷移できる
/icons/感謝.iconyosider.icon
PageMenuのitemがリセットされなくなったのでリセットするようにした
dnin.icon
ハイスコア叩くのが楽しい
既読ページ12枚くらいログに出た
イドバタニシであることを実感
わかるyosider.iconyosider.icon