MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 222: Line 222:
   }
   }


   // MW hook fires when page content is ready
   // MW hook fires when page content is ready (including after MW re-renders)
  var hooked = false;
   if (window.mw) {
   if (window.mw) {
     mw.hook('wikipage.content').add(function () {
     mw.hook('wikipage.content').add(function () {
      translatableSpans = [];
       var oldBar = document.querySelector('.gr-script-bar');
       var oldBar = document.querySelector('.gr-script-bar');
       if (oldBar) oldBar.remove();
       if (oldBar) oldBar.remove();
       setTimeout(init, 100);
       if (!hooked) {
        // First run — tag nodes and build everything
        hooked = true;
        translatableSpans = [];
        setTimeout(init, 100);
      } else {
        // Subsequent MW re-renders — nodes are already tagged,
        // just rebuild the bar and re-attach the TOC observer
        setTimeout(function () {
          buildBar();
          watchTocActive();
        }, 100);
      }
     });
     });
   }
   }