利用者:冰川碧生/common.js
表示
< 利用者:冰川碧生
(利用者:氷川深碧/common.jsから転送)お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
if ( mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ).done( function () {
var api = new mw.Api(),
cache = {},
pathPrefix = mw.format( mw.config.get( 'wgArticlePath' ), '' ),
ignoredClasses = [
'.new',
'.extiw',
'.external',
'.internal',
'.image',
'.mw-redirect'
].join( ',' ),
selector = mw.format( 'a[href^="$1"]:not($2)', pathPrefix, ignoredClasses ),
query = {
formatversion: 2,
titles: mw.config.get( 'wgPageName' ),
prop: 'info',
generator: 'links',
gpllimit: 'max',
gplnamespace: 0
},
threshold = 13000;
function makeRequest( query, cont ) {
var apiPromise = api.get( $.extend( query, cont ) );
return apiPromise.then( function ( data ) {
( data.query && data.query.pages || [] ).filter( function ( obj ) {
return 'length' in obj;
} ).forEach( function ( obj ) {
cache[ obj.title ] = obj.length;
} );
if ( data[ 'continue' ] ) {
return makeRequest( query, data[ 'continue' ] );
} else {
return undefined;
}
} ).promise( {
abort: apiPromise.abort
} );
}
mw.util.addCSS( '.stub { color: cyan; }' ); // [[phab:T284917]]
mw.hook( 'wikipage.content' ).add( function ( $content ) {
makeRequest( query ).done( function () {
if ( Object.keys( cache ).length ) {
$content
.find( selector )
.filter( function () {
var href = this.getAttribute( 'href' ),
title = decodeURI( href.replace( pathPrefix, '' ).replace( /_/g, ' ' ) );
return title in cache && cache[ title ] <= threshold;
} )
.addClass( 'stub' );
}
} );
} );
} );
}