MAKIBISHI anywhere

  • /*
     * @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 です。

History

  1. 2024/11/27 20:46:50 - 2024-11-27
  2. 2024/08/03 07:34:13 - 2024-08-03