Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*  _____________________________________________________________________________ * |                                                                             | * |                    === WARNING: GLOBAL GADGET FILE ===                      | * |                  Changes to this page affect many users.                    | * | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. | * |_____________________________________________________________________________| * * Adds persistent table of contents. See [[User:Prtksxna/ptoc]] * Copied from https:https://www.how.com.vn/wiki/index.php?lang=en&q=User:Prtksxna/ptoc.js&oldid=663987716 */ mw.loader.using( 'jquery.throttle-debounce', function () {$( function () {var $window, $mwPanel, $floatTOC, scrollHandler,tocLimit, headingOffsets, headingThreshold,$toc = $( '#toc' ); if ( !$toc.length ) {return;} $window = $( window );$mwPanel = $( '#mw-panel' );headingThreshold = $window.height() / 5.0;$floatTOC = $toc.clone().removeAttr( 'id' ).addClass( 'floatTOC' ).appendTo( 'body' ).css( {visibility: 'hidden',opacity: 0} ); // Show the ToC ul even if its hidden$floatTOC.find( 'ul' ).show(); // Hijack links so that we can scroll to the content$floatTOC.find( 'a' ).click( function ( e ) {$( 'html, body' ).animate( {scrollTop: $( $( this ).attr( 'href' ) ).offset().top - headingThreshold} );return false;} );  tocLimit = $toc.offset().top + $toc.height();headingOffsets = []; // Get all heading positions$('.mw-headline').each( function () {headingOffsets.push( [ $( this ).attr( 'id' ), $( this ).offset().top ] );} ); // For the window scroll eventscrollHandler = function () {var $current,scrollTop = $window.scrollTop(); if ( scrollTop > tocLimit ) {$floatTOC.css( {visibility: 'visible',opacity: 1} );$mwPanel.hide(); // Highlight currentvar highlight = false;// Current section is above the first heading below the top of the screen$.each( headingOffsets, function ( i, v ) {// Skip first as there's no previous heading before the firstif ( i !== 0 && ( scrollTop + headingThreshold ) < v[ 1 ] ) {highlight = headingOffsets[ i - 1 ][ 0 ];return false;}} ); if ( highlight ) {$current = $floatTOC.find( 'a[href="#' + highlight + '"]' );$floatTOC.find( 'a' ).not( $current ).css( 'font-weight', '' );$current.css( 'font-weight', 'bold' );} } else {$floatTOC.css( {visibility: 'hidden',opacity: 0} );$mwPanel.show();}} $window.on( 'scroll', $.throttle( 250, scrollHandler ) );} );} );