跳转到内容

MediaWiki 开发者手册/添加 JavaScript/预定义变量

来自维基教科书,开放书籍,开放世界

URL 构造函数和服务器信息

[编辑 | 编辑源代码]
var wgScript = "/w/index.php";
var wgArticlePath = "/wiki/$1":
var wgServer = "//wikibooks.cn";
var wgCookiePrefix = "enwikibooks";

使用 wgServerwgScript,您可以构建一个有效的维基 URL。这对于差异和其他操作链接非常有用。

要转到维基媒体维基上的页面,您知道 http://lang.family.org/wiki/article 会将您带到您想要去的地方,但并非所有维基都具有 短 URL - 在这种情况下,使用 wgArticlePath 来了解如何构建文章路径,或者直接使用 wgServerwgScript

变量 wgArticlePath 可以通过将 $1 替换为页面标题来使用:wgArticlePath.replace(/$1/,"Main Page")

页面信息

[编辑 | 编辑源代码]
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "MediaWiki_Developer\'s_Handbook/Add_JavaScript";
var wgTitle = "MediaWiki Developer\'s Handbook/Add JavaScript";
var wgAction = "view";
var wgIsArticle = true;
var wgCanonicalNamespace = "Special";
var wgCanonicalSpecialPageName = "Specialpages";
var wgNamespaceNumber = -1;
var wgPageName = "Special:SpecialPages";
var wgTitle = "SpecialPages";

规范命名空间不会因本地化而改变。例如,在 kmwiki 上,他们的元数据或项目命名空间具有 wgCanonicalNamespace == "Project",而在 km:ជំនួយ:Editing 上,wgCanonicalNamespace == "Help"

同样,每个命名空间都有一个数字,从主命名空间的零开始。这些数字是 可定制的

这对于使脚本可移植非常有用 - 您不必担心了解命名空间的本地化名称 - 只需使用规范名称或数字即可。

由于此页面位于主命名空间中,wgPageName == wgTitle,但在 维基教科书:关于 上,情况并非如此。

var wgPageName = "Help:About";
var wgTitle = "About";

wgTitle 从不包含命名空间前缀,而 wgPageName 包含。还要注意,wgPageName 将空格替换为下划线。

wgAction 是以下之一:

  • view
  • submit(点击保存页面显示预览显示更改后)
  • history
  • edit
  • delete
  • protect
  • purge(在进行 ?action=purge 以清除服务器缓存,强制重新渲染页面时)

这揭示了用户在当前页面上的操作。请注意:对于用户而言,在许多情况下,view、submit 和 purge 可能没有区别。在某些情况下,您可能希望您的脚本在所有这些情况下都运行。

wgAction 通常用于在不需要时避免运行整个脚本。如果您的脚本更改了页面历史记录表单,那么您可以执行以下操作:

if ( wgAction == 'history' ) {
	addOnloadHook( changeHistoryForm() );
}
function changeHistoryForm() {
	...
}

wgIsArticle 告诉您页面是文章还是 特殊页面

特殊页面

[编辑 | 编辑源代码]
var wgCanonicalNamespace = "Special";
var wgCanonicalSpecialPageName = "Specialpages";
var wgNamespaceNumber = -1;
var wgPageName = "Special:SpecialPages";
var wgTitle = "SpecialPages";

对于 特殊页面,规范命名空间为 "Special",而 wgCanonicalSpecialPageName 是特殊页面的英文非 驼峰式 名称。同样,规范形式不会因本地化而改变,因此最好使用它。此外,所有特殊页面都具有命名空间编号 -1。

用户信息

[编辑 | 编辑源代码]
var wgUserName = "Mike.lifeguard";
var wgUserGroups = ["bureaucrat", "checkuser", "editor", "sysop", "*", "user", "autoconfirmed"];
var wgGlobalGroups = ["Global_rollback", "steward"];

用户的用户名设置为 wgUserName,他们的本地和全局组位于数组中。请注意,全局组 全局回滚 有一个下划线,而不是空格。

这在脚本的一部分需要用户属于特定用户组(通常是 sysop)时非常有用。

function userIsInGroup( group ) {
	// are they in a given local group?
	if ( wgUserGroups ) {
		if ( !group || group.length == 0 ) {
			group = '*';
		}
		for(var i in wgUserGroups)
			if (wgUserGroups[i]==group) return true;
	}
	return false;
}
if ( userIsInGroup( 'sysop' ) ) {
	...
}
华夏公益教科书