帮助:扩展:GlobalCssJs

From mediawiki.org
This page is a translated version of the page Help:Extension:GlobalCssJs and the translation is 69% complete.
Outdated translations are marked like this.

GlobalCssJs扩展允许用户创建在一个wiki农场的所有wiki下加载的JavaScript及CSS页面。 如果在启用该扩展的任意wiki下前往参数设置 > 外观,您会看到指向您的全域脚本和样式表的链接:

所有wiki共用的CSS/JavaScript(更多信息):

在维基媒体wiki,这些全域自定义设置托管在Meta-wiki上。

全域脚本(JavaScript)

变量

在将脚本添加至您的global.js时请注意,与小工具一样,以“var example”声明的变量不会附加到window对象上:它们是局部变量,其范围是由ResourceLoader插入的包装函数来实现的全局模块(称作“ext.globalcssjs.user”)。 因此,如果您打算将本地脚本移动至全局模块,需要定义全局变量,请确保您使用了语法“window.example”来声明它们。

示例

/* 任何加入此页的JavaScript将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */
window.myConfig = true;
// [[wikipedia:User:Lupin/popups]]
window.popupAdminLinks = true;
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Lupin/popups.js&action=raw&ctype=text/javascript' );

显式URL

您需要传递完整的URL来加载脚本。

示例

/* 任何加入此页的JavaScript将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */

mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Lupin/popups.js&action=raw&ctype=text/javascript' );

各wiki自定义

示例

/* 任何加入此页的JavaScript将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */
// Define a few functions
function onMultiLingualWikis(){
	// ...
}
function onWikibooks(){
	// ...
}
function onFrench(){
	// ...
}
function onRuWikisource(){
	// ...
}
function onEveryWiki(){
	mw.loader.load( '//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript' );
}
onEveryWiki();
if ( /^(mediawiki|wikidata|meta|commons)wiki$/.test( mw.config.get( 'wgDBname' ) ) ) {
	onMultiLingualWikis();
} else if ( /wikibooks$/.test( mw.config.get( 'wgDBname' ) ) ) {
	onWikibooks();
} else if ( mw.config.get( 'wgContentLanguage' ) === 'fr' ) {
	onFrench();
} else if ( mw.config.get( 'wgDBname' ) === 'ruwikisource' ) {
	onRuWikisource();
}

排除某个维基

如果您想排除特定的wiki,例如英文维基文库,您可以将您global.js的全部或一部分用以下代码包裹:

if ( mw.config.get("wgDBname") !== "enwikisource" ) {
	// 您想在除enwikisource之外的其他wiki上加载的JavaScript放在此处
}

例子:设置全域界面语言

注意 注意:

/* Change language to German */
mw.loader.using( 'mediawiki.user', function() {
	if ( mw.user.options.get( 'language' ) !== 'de' ) {
		( new mw.Api() ).postWithToken( 'csrf', {
			action: 'options',
			change: 'language=de'
		} ).then( function() {
			mw.notify( 'Language has been changed to German. Please refresh the page.' );
		} );
	} else {
		console.log( 'Language already set to German!' );
	}
} );

全域样式表(CSS)

注意:所有@import ...语句必须放在最上方。

示例

/* 任何加入此页的CSS将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */

/* Hide a few elements of the interface */
#n-help,
#footer {
	display: none !important;
}

各皮肤自定义

目前扩展不提供针对特定皮肤的全域CSS/JS,但您可以在全域中针对单个皮肤自定义CSS和JS。对于CSS,您使用诸如“$2”和“$3”的类来编辑特定皮肤的外观,其会由MediaWiki自动添加到body元素中。 For CSS, you can edit the appearance of a specific skin by using classes such as "skin-vector" and "skin-monobook", which are added to the body element automatically by MediaWiki. 您可以使用:not()选择器来跳过某一皮肤,例如使用:not(.skin-minerva)来使某个规则不在移动版皮肤中应用。

例子(CSS)

/* 任何加入此页的CSS将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */

/* Hide a few elements of the interface on vector skin */
.skin-vector #n-help,
.skin-vector #footer {
	display: none !important;
}

/* Bold the sidebar interwiki links to en.wikipedia.org, simple.wikipedia.org, and interproject links to Commons/Wikivoyage */
.interwiki-en, .interwiki-simple, .wb-otherproject-commons, .wb-otherproject-wikivoyage {
        font-weight: bold;
}

例子(JS)

/* 任何加入此页的JavaScript将在所有您拥有账户的wiki加载(参见[[mw:Special:MyLanguage/Help:Extension:GlobalCssJs|文档]])。 */
// Load JWB globally when using the Vector skin

if ( mw.config.get( 'skin' ) === 'vector' ) {
	mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');
}