MAKIBISHI anywhere
by
Nikola
11/27 [2024/11/27 20:46:50]
どこでもマキビシ
@@ -3,32 +3,41 @@
* @description どこでもマキビシ
* @include http://*
* @license CC0 1.0
- * @require
+ * @require
*/
(() => {
- if (document.querySelector('.makibishi')) return;
+ const url = 'https://cdn.jsdelivr.net/npm/@nikolat/makibishi';
+ const elms = document.querySelectorAll('.makibishi');
+ //設置済みの場合、強制的に剥がして最新版で読み直し
+ if (elms.length > 0) {
+ //MAKIBISHIを動的に読み込む
+ affixScriptToHead(url, () => {
+ for (const elm of elms) {
+ elm.innerHTML = '';
+ elm.dataset.allowToDeleteReaction = 'true';
+ window.makibishi.initTarget(elm);
+ }
+ });
+ return;
+ }
//<span class="makibishi"></span>をh1またはh2の末尾に追加
const h1 = document.querySelector('h1');
const h2 = document.querySelector('h2');
const span = document.createElement('span');
span.classList.add('makibishi');
+ span.dataset.allowToDeleteReaction = 'true';
if (h1) h1.appendChild(span);
else if (h2) h2.appendChild(span);
else return;
//MAKIBISHIを動的に読み込む
- affixScriptToHead(
- 'https://cdn.jsdelivr.net/npm/@nikolat/makibishi@0.1.3',
- () => {
- window.makibishi.initTarget(span);
- },
- );
+ affixScriptToHead(url, () => {
+ window.makibishi.initTarget(span);
+ });
//https://developer.mozilla.org/ja/docs/Web/API/HTMLScriptElement のコピペ
function loadError(oError) {
- throw new URIError(
- `スクリプト ${oError.target.src} は正しく読み込まれませんでした。`,
- );
+ throw new URIError(`スクリプト ${oError.target.src} は正しく読み込まれませんでした。`);
}
function affixScriptToHead(url, onloadFunction) {
@@ -41,4 +50,3 @@
newScript.src = url;
}
})();
-
/*
* @title MAKIBISHI anywhere
* @description どこでもマキビシ
* @include http://*
* @license CC0 1.0
* @require
*/
(() => {
const url = 'https://cdn.jsdelivr.net/npm/@nikolat/makibishi';
const elms = document.querySelectorAll('.makibishi');
//設置済みの場合、強制的に剥がして最新版で読み直し
if (elms.length > 0) {
//MAKIBISHIを動的に読み込む
affixScriptToHead(url, () => {
for (const elm of elms) {
elm.innerHTML = '';
elm.dataset.allowToDeleteReaction = 'true';
window.makibishi.initTarget(elm);
}
});
return;
}
//<span class="makibishi"></span>をh1またはh2の末尾に追加
const h1 = document.querySelector('h1');
const h2 = document.querySelector('h2');
const span = document.createElement('span');
span.classList.add('makibishi');
span.dataset.allowToDeleteReaction = 'true';
if (h1) h1.appendChild(span);
else if (h2) h2.appendChild(span);
else return;
//MAKIBISHIを動的に読み込む
affixScriptToHead(url, () => {
window.makibishi.initTarget(span);
});
//https://developer.mozilla.org/ja/docs/Web/API/HTMLScriptElement のコピペ
function loadError(oError) {
throw new URIError(`スクリプト ${oError.target.src} は正しく読み込まれませんでした。`);
}
function affixScriptToHead(url, onloadFunction) {
const newScript = document.createElement('script');
newScript.onerror = loadError;
if (onloadFunction) {
newScript.onload = onloadFunction;
}
document.head.appendChild(newScript);
newScript.src = url;
}
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。