別プロジェクトへのリンク先が不存在ならオレンジ
@shokai Scrapboxの別プロジェクトへのリンクについてもリンク先が存在すれば青、不存在ならオレンジ、という表示がされたら、学生のレポート類の採点の際に存在しないリンク先まで開いて確認する必要がなくなって作業効率が上がり便利だと思うのですが、それは技術的に難しいですか?
というのを作ってみました。matobaa.icon
とりあえずページリロードの時だけ実行してます。Chromeで動作確認しました。IEでは動きません。
編集したタイミングでトリガーすることは(意図的に)してません
ページ遷移したタイミングでトリガーしたいが、いまのところ方法がわからず。妖精さん募集
code:script.js
// orange if page not exists in other projects
(() => {
function markEmptyExternalProjectLink() {
Array.from(document.querySelectorAll(".page .lines a.page-link"))
.filter(a => a.innerText.startsWith('/'))
.forEach(async a => {
const response = await fetch(a.href.replace("scrapbox.io", "scrapbox.io/api/pages"));
const json = await response.json();
if(!json.persistent) {
a.classList.add("empty-page-link");
}
});
}
window.scrapbox.addListener("page:changed", () => {
markEmptyExternalProjectLink();
});
markEmptyExternalProjectLink();
})();
UserScript.icon