Skip to content

Examples (redirect)

Bhsd edited this page Apr 15, 2026 · 6 revisions

Other Languages

修复双重重定向

展开

假设存在从 FooBar 再到 Baz 的双重重定向,你可以通过编辑页面 Foo,将重定向目标从 Bar 改为 Baz 来修复它。此示例演示了 Parser.redirectsRedirectTargetToken 的用法。

// Fixing double redirects (main)
Parser.redirects.set('Bar', 'Baz');

// 页面 `Foo` 的内容,可能包含额外的维基文本
var content = `#REDIRECT [[Bar]]

{{Redirect category shell}}`,
	root = Parser.parse(content, 'Foo'),
	target = root.querySelector('redirect-target#Baz');
if (target?.innerText !== 'Baz') {
	target.setTarget('Baz');
}
assert.equal(
	root,
	`#REDIRECT [[Baz]]

{{Redirect category shell}}`,
);

替换指向重定向的链接

展开

假设存在从 FooBar 的重定向,你可以将页面中所有指向 Foo 的链接替换为指向 Bar 的链接。此示例演示了 Parser.redirectsLinkTokenTitle.prototype.isRedirect 的用法。

// Replacing links to redirects (main)
Parser.redirects.set('Foo', 'Bar');

// 包含指向 `Foo` 链接的页面内容
var content = [[Foo]] is a redirect to [[Foo|Bar]].',
	root = Parser.parse(content);
for (const link of root.querySelectorAll('link#Bar')) {
	if (link.link.isRedirect()) {
		// 保持链接文本不变,但将目标改为 `Bar`
		link.setLinkText(link.innerText);
		link.setTarget('Bar');
	}
}
assert.equal(
	root,
	[[Bar|Foo]] is a redirect to [[Bar|Bar]].',
);

修复分类重定向

展开

假设存在从 Category:FooCategory:Bar 的重定向,你可以通过将页面中指向 Category:Foo 的分类链接替换为指向 Category:Bar 的分类链接来修复分类重定向。此示例演示了 Parser.redirectsCategoryTokenTitle.prototype.isRedirect 的用法。

// Fixing category redirects (main)
Parser.redirects.set('Category:Foo', 'Category:Bar');

// 包含指向 `Category:Foo` 分类链接的页面内容
var content = `Foo is Bar.

[[Category:Foo]]`,
	root = Parser.parse(content);
for (const category of root.querySelectorAll('category#Category:Bar')) {
	if (category.link.isRedirect()) {
		// 将目标改为 `Category:Bar`
		category.setTarget('Category:Bar');
	}
}
assert.equal(
	root,
	`Foo is Bar.

[[Category:Bar]]`,
);

Clone this wiki locally