import
自分のページで使用するUserScript
使い方
各projectの自分のページのscript.jsに以下を貼り付ける
code:js
import "../../takker/import/script.js";
2022-02-04 09:28:09 #editorがmountされる前にscript.jsが読み込まれるようになってしまった
おそらく、Firefox Nightlyに変えたせい
応急処置として以下のコードを導入する
from /scrapbox-drinkup/puppeteerでscrapboxを自動化してイテレーション資料を宣言的に完成させる (2019/9/5)
code:script.js
await new Promise(resolve => {
let timer = null;
timer = setInterval(() => {
if (!document.getElementById('editor')) return;
clearInterval(timer);
resolve();
}, 1000);
});
Scrapbox-UserScript-Switcher
code:script.js
const name = "Scrapbox-UserScript-Switcher";
const devUserPage = "import-dev";
const params = new URLSearchParams(location.search);
no script mode (UserScrpt)
code:script.js
if (params.has("noscript")) {
console.info([${name}] No script mode);
dev mode (UserScript)
dev modeではimport-devを読み込む
code:script.js
} else if(params.has("dev")) {
console.info(`${name} Development mode. Loading "${
../${devUserPage}/script.js
}" instead...`);
await import(../${devUserPage}/script.js);
console.info([${name}] Successfully loaded.);
code:script.js
} else {
// 通常のUserScriptを読み込む
await importProductionUserScript();
}
projectごとにUserScriptを切り替える
ベースscriptはfor-any-projectから読み込む
code:script.js
async function importProductionUserScript() {
const defaultSrc = "../../takker-dist/for-any-project-min/script.js";
switch(scrapbox.Project.name) {
case "takker":
await Promise.all([
await import(defaultSrc),
await import("./takker.js"),
]);
break;
case "takker-memex":
await import("../../takker-dist/for-any-project-min/takker-memex.js");
break;
case "villagepump":
await Promise.all([
await import(defaultSrc),
await import("./villagepump.js"),
]);
break;
case "programming-notes":
await Promise.all([
await import(defaultSrc),
await import("./programming-notes.js"),
]);
break;
active読書用projectの設定
以下に相当する機能をPorterっぽい編集バーを生やすUserScriptで導入している
一旦改行を消して句点で改行し直すPopupMenu
選択したGyazo画像のtrimmingページを開くPopup Menu
また、Ankiの穴埋めを作るPopupMenuも入れている
code:script.js
case "takker-books": {
const {
addButton,
insertText,
} = await import(defaultSrc);
addButton({
display: ({ selection }) => selection.hasSelection() ?
"\\n" : "",
onClick: async ({ selection }) => {
const text = selection.getSelectedText();
await insertText(
text.replaceAll("\n", "")
.replaceAll(".", ".\n")
.replaceAll(".", ".\n")
.replaceAll("。", "。\n")
);
},
});
addButton({
display: ({ selection }) =>
/https:\/\/gyazo\.com\/a-z0-9+/.test(
selection.getSelectedText()
) ? { type: "trim" } : "",
onClick: ({ selection }) => {
const id = selection
.getSelectedText()
.match(
/https:\/\/gyazo\.com\/(a-z0-9+)/
)?.1;
if (!id) return;
window.open(https://gyazo.com/${id}/transform);
},
});
await import("../cosense-srsの穴埋めを作るPopupMenu/script.js");
break;
}
code:script.js
default:
await import(defaultSrc);
break;
}
}
個別のproject用scripts
/villagepump
code:villagepump.js
import { execute } from "../Scrapbox-theme-saver/script.js";
execute({interval: 30 * 60 * 1000});
import "../pin-diary-6-min/script.js";
import "../18:00~09:00は井戸端を開けなくするUserScript/ban.js";
import { setup } from "../ToMyProj/mod.js";
setup("takker");
/programming-notes
themeをpaper-dark-darkに変更する
code:programming-notes.js
import { setTheme } from "../scrapbox-theme-customizer/script.js";
setTheme("paper-dark-dark");
/takker
code:takker.js
import "../scrapbox-open-episopass/script.js";
/takker-memex
bundle済みコードはfor-takker-memexを参照
get bundled code
code:takker-memex.js
import "../for-any-project/script.ts";
export * from "../for-any-project/script.ts";
import "../New_Buttonで開くページを変更する/script.js";
import "../LETUS_online_editor形式に変換してcopyするPopupMenu/script.js";
import "../選択範囲をspell_checkするPopupMenu/script.js";
import "../文字カウント_(scrapbox)/script.js";
import "../takker99%2Ftakker-scheduler%2Fmobile/script.ts";
import "../scrapbox-open-episopass/script.js";
code:takker-memex(txt)
for-takker-memex
/takker-memexで使うUserScript
takker-memex.jsをこのURL @URL@でbundleしたもの
code:script.js
@CODE@
/icons/hr.icon
UserCSS
code:style.css
@import "../import-css/style.css";
code:default.css
@import "../import-css/default.css";
UserCSSもscript.jsから読み込ませるようにしようかな
projectごとにUserCSSを動的に切り替えることができる
#2024-10-16 16:48:10 cosense-srsの穴埋めを作るPopupMenu導入テスト
#2024-05-27 15:46:50 /takker-booksで使うpopup menu shortcutをtakker99/ScrapBindings-settingsに移した
#2023-11-30 08:30:52 選択範囲をnote (Anki)にするPopupMenu@0.1.0をnで実行する
#2023-03-22 15:38:57 ToMyProjを入れた
#2022-12-29 03:19:16
#2022-12-27 07:50:40
#2022-12-03 13:54:00 井戸端を開いてからの経過時間を表示するUserScriptを外した
全く見ない
むしろmobileでPage Info Menuなどと被って邪魔
#2022-06-20 08:03:16
#2022-06-19
#2022-05-21 14:00:59
#2022-05-19 11:26:08
#2022-05-10 07:48:03 refactoring
#2022-04-30 06:51:50
#2022-03-26 10:01:32 クソデカminifyコードを/takkerに貼り付けるのはいい加減やめようか対策
#2022-02-13 12:00:48 井戸端を開いてからの経過時間を表示するUserScriptを追加した
#2022-02-11 22:02:43
#2022-01-07 10:08:06
#2022-01-05 16:47:29 タスク管理ツールをtakker99/takker-schedulerに置き換えた
#2021-12-15 21:22:27 /takkerと/takker-memexのコードを変更
#2021-12-07
#2021-11-16 18:15:23