公開プロジェクトで下書きのページだけ非表示っぽくする
Cosenseだと保存とか公開とかのの概念はなくて編集中の状況も全て見ることができる 個人やプライベートなプロジェクトであれば特に問題はないけど,ここのプロジェクトのように公開プロジェクトの場合に作業中のページを見せるのはなんだかちょっと気になるshinyaoguri.iconです.
おそらく一般的な方法としては
プライベートな別のプロジェクトに記事を書いて
書けたら公開ページへコピーする
という簡単な方法だと思う
ただ,これだと無駄に作業用プロジェクトを作らないといけないのでちょっと面倒.
そこで,
を組み合わせることで,下書きページだけ非表示だけど自分は見れるという状況を作ることができた
完全に消しているわけではないので,単にちょっと見えなくなっているというだけ.
見ようと思えば普通に見れるので,単なる見た目上の問題であることには注意が必要
hr.icon
動作例
shinyaoguri.iconが見ているページ
https://gyazo.com/a5fd7738d2d23f664a1ace94a11a500c
ゲストが見てるページ
https://gyazo.com/fe06407018a2c8fad2d5ef99dfeaab97
今回の場合,非表示にするのは
タイトルが202から始まるページ
を条件のものにしている
前半2つはどちらでも良いけど,比較的頻繁に書き換えるために,割とどうでもいいのに上の方にいつもいるページになってしまので消したかった.
ゲストでこのプロジェクトに訪れている人は実際202から始まるページは表示されていないかと思う.
検索したら出てくるので,検索をかけてみてほしい
hr.icon
実現方法
非表示にする方法は
こちらの参考にした
code:style.css
display: none;
}
これはUserCSSなので全ての人に適用され,この条件のページは非表示になる
だけど,編集者の場合には
code:script.js
let elements = document.querySelectorAll(
);
elements.forEach(function(element) {
element.style.display = 'flex';
});
これで先ほどのUserCSSの内容をキャンセルして,表示させることが可能
hr.icon
ホーム画面に戻った時にリロードされない問題の解消
ただ一つ問題はあって,ScrapboxはSPAで動いてるのでホーム画面に戻るとUserScriptがロードされない
よって一度Ctrl+Rとかでリロードする必要が出てくる.
できればタイトルページに遷移したのを検出して,UserScriptをリロードしたい
調べてみると
ということでsetIntervalを使えということのようなので,そのようにしてみる
code:script.js
function showHiddenPage() {
);
elements.forEach(function(element) {
element.style.display = 'flex';
});
}
setInterval(function() {
showHiddenPage();
}
}, 1000);
1秒ごとにホーム画面にいるかどうかを判定して,ホーム画面なら先ほどのUserCSSを上書きする処理を走らせるという作戦をとることにした.これでちょっとだけラグがあるけどリロードなしでUserScriptが読み込まれるようになったはず
誰かの参考になれば