MAKIBISHI anywhere

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

History

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