Green
https://lh3.googleusercontent.com/a/ACg8ocLcBURTJMHSvMoF9Jm2olZ1Y6CAkIWW92nSZNuOVwX1AgQ=s96-c#.png ここは Spica GreenのページですScrapbox Beaver.icon
code:RUN.css
.page-list .grid li:not(.pin) {
display: block !important;
}
.navbar-form {
display: block !important;
}
.new-button {
display: inline-flex !important;
}
.full-content-modal .modal-body .toolbar {
display: block;
}
.quick-launch .right-box {
display: block !important;
}
.quick-launch .flex-box {
display: flex !important;
}
.kamon {
display: block !important;
}
.page-menu .tool-btn {
display: inline-flex !important;
}
display: inline-flex !important;
}
.editor {
pointer-events: auto !important;
}
code:RUN.js
◆ コードブロック内の全角文字バグ対策
code:script.js
(() => { // 即時関数とやらで書くのが良いらしい?
scrapbox.on('lines:changed', twoBytesCharacterColoring);
twoBytesCharacterColoring();
function twoBytesCharacterColoring() {
if (!window.scrapbox.Page.lines) return;
const codeCharList =
document.querySelectorAll('.line span.code-block span.indent span.char-index');
for (const c of codeCharList) {
const char = c.textContent; // 文字を取得
c.style.color = '#888888'; // 文字色はおとなしく
c.style.backgroundColor = '#FFF0E0'; // 背景色を設定 警告的な色
c.style.fontWeight = 'bold'; // フォントの太さを設定
c.style.letterSpacing = '0.16em'; // 編集時カーソル位置不具合対策?
c.style.fontSize = '80%'; // ちょっと小さめに書いて
}
} // ( { ` 0123 . ” - | 誤字対策!
}
})();
◆RUN
◆ console.log の代替のメッセージ出力 色名文字列で機能追加!
code:script.js
window.MyConsole = function(message, color) {
color = color || 'black'; // デフォルトの色を黒に設定
var newWindow = window.open("", "newWindow", "width=400,height=400");
newWindow.document.write("<p style='color:" + color + "; font-size:" + 0.75 + "em;'>" + message + "</p>");
}
◆ ピっと鳴って ページリロードして 読み込んだスクリプトをリセットする
code:script.js
window.BeepAndReload = function() {
var context = new AudioContext();
var oscillator = context.createOscillator();
oscillator.type = "sine";
oscillator.frequency.value = 880;
oscillator.connect(context.destination);
oscillator.start();
var beepDuration = 50; // Beep音の長さを変数に代入
setTimeout(function () {
oscillator.stop();
// Beep音が鳴り終わった後にリロードを行う
setTimeout(function () {
location.reload();
}, beepDuration);
}, beepDuration + 100);
}
◆ この関数をコールすると左上のマークが回転する。
code:script.js
window.BMRunningNow = function() {
// CSSの .brand-icon の表示画像を取得
var img = document.querySelector('.brand-icon');
var deg = 0;
setInterval(function() {
img.style.transform = 'rotate(' + deg + 'deg)';
deg = (deg - 6) % 360;
}, 20);
}
RUN.html RUN.css 読み込みモジュール(広域スコープ)
code:script.js
function loadHTML(htmlurl) {
return new Promise((resolve, reject) => {
fetch(htmlurl)
.then(response => response.text())
.then(data => {
if (!document.documentElement.innerHTML.includes(data)) {
var div = document.createElement('div');
div.innerHTML = data;
document.body.appendChild(div);
}
resolve();
});
});
}
function loadCSS(cssurl) {
return new Promise((resolve, reject) => {
var styleSheets = Array.from(document.styleSheets).map(styleSheet => styleSheet.href);
if (!styleSheets.includes(cssurl)) {
var head = document.getElementsByTagName('HEAD')0; var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = cssurl;
head.appendChild(link);
resolve();
}
});
}
◆ RunRunボタン
code:script.js
// オルタネイト動作するのだ
var clickRunRunBT = 0;
// UserScript でボタンを追加する
scrapbox.PageMenu.addMenu({
title: 'RunButton',
onClick: () => { // ボタン押されたとき
// RUN がすでに動いていたら
if (clickRunRunBT === 1) {
clickRunRunBT = 0;
BeepAndReload(); // リセットする
} else {
// RUN が動いていない状態で RUN ボタンが押されたら
var RUNcurrentUrl = decodeURIComponent(window.location.href);
// プロジェクト名/ページ名を切り出す
// HTML CSS JavaScript 各 URLにする
// HTML と CSS を読み込む。無くてもエラーにならない。
.then(() => {
// RUN.js を読み取って、スクリプトに追加して間接的に実行する
clickRunRunBT = 1;
BMRunningNow();
// Fetch APIを使用して JavaScriptを取得
fetch(RUNjsurl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
var existingScript = document.querySelector(script[src="${RUNjsurl}"]);
if (!existingScript) {
var elm = document.createElement('script');
elm.setAttribute('src', RUNjsurl);
elm.onload = function() {
this.remove();
};
document.body.appendChild(elm);
}
})
.catch(error => {
alert(RUN.js にアクセスできません。\nおそらくこのページに code:RUN.js が書かれていないものと思われます。);
// RUN.js は必須
BeepAndReload(); // なくってもリセット
});
});
}
}
})