「MediaWiki:Gadget-SmoothScroll.js」の版間の差分

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動
(アドレスバーをアンカーリンクに置き換える機能を追加)
(bugfix: 対象が存在しないときに処理を打ち切る)
9行目: 9行目:
     // 移動先のアンカーを設定
     // 移動先のアンカーを設定
     var anchor = $(this).attr("href").slice(1);
     var anchor = $(this).attr("href").slice(1);
     var target = $('[id="' + anchor + '"]');
     var $target = $('[id="' + anchor + '"]');
    // 対象が存在しない場合に処理を打ち切る
    if ( $target.length === 0 ) {
    return true;
    }


     // なめらかにスクロール
     // なめらかにスクロール
     var position = target.offset().top;
     var position = $target.offset().top;
     $("html, body").animate({ scrollTop: position }, speed, "swing");
     $("html, body").animate({ scrollTop: position }, speed, "swing");



2024-03-15T17:56:37時点における版

/*
 * なめらかスクロール(同一ページ内の遷移)
 */
jQuery( document ).ready( function( $ ) {
  $('a[href^="#"]').click(function () {
  	// スクロール速度
    var speed = 500;

    // 移動先のアンカーを設定
    var anchor = $(this).attr("href").slice(1);
    var $target = $('[id="' + anchor + '"]');
    // 対象が存在しない場合に処理を打ち切る
    if ( $target.length === 0 ) {
    	return true;
    }

    // なめらかにスクロール
    var position = $target.offset().top;
    $("html, body").animate({ scrollTop: position }, speed, "swing");

    // アドレスバーをアンカーリンクに置き換える
    var FQDN = mw.config.get( 'wgServerName' );
    var pageTitle = mw.config.get( 'wgTitle' );
    var newUrl = 'https://' + FQDN + '/wiki/' + pageTitle + '#' + anchor;

    history.replaceState(null, null, newUrl);
    
    return false;
  });
});