「MediaWiki:Gadget-SmoothScroll.js」の版間の差分
ナビゲーションに移動
検索に移動
(アドレスバーをアンカーリンクに置き換える機能を追加) |
(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;
});
});