2023年政策修订增补工作正在进行中,欢迎参与!
MediaWiki:Moeskin.js
跳转到导航
跳转到搜索
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
- Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
- Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
- Opera:在“工具→首选项”中清除缓存
- 如果您已登录但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码
?_=1
来访问最新页面。 - 添加代码后的本页地址如下:
-{R|https://moegirl.icu/MediaWiki:Moeskin.js?_=1}-
引用api时用
mw.loader.using(["mediawiki.api"])
,引用uri时用mw.loader.using(["mediawiki.Uri"])
。萌娘百科界面管理员团队提醒您
本页面由萌娘百科界面管理员团队在其 GitHub 库内进行维护,通过机器人自动生成可被 MediaWiki Gadget 扩展接受的版本并保存到此处。
- 本页面的内容为自动生成,手动修改可能会被覆盖,源码可在此处查看;
- 最新修订由 U:屠麟傲血 做出,相关 commit 为:cab43dc7 - fix: add space after ✌//✌ and semicolon after const, delete an unless blank line
/** * ------------------------------------------------------------------------- * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!! * ------------------------------------------------------------------------- */ var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/global/zh/MediaWiki:Moeskin.js|user=[[U:屠麟傲血]]|co-authors=|longId=cab43dc7b58ebbd1ef0565300732ecb11ec353de|shortId=cab43dc7|summary=fix: add space after ✌//✌ and semicolon after const, delete an unless blank line}}'; /* <pre> */ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; (function () { return __awaiter(void 0, void 0, void 0, function () { function fixImage() { return __awaiter(this, void 0, void 0, function () { var getImageInfo_1; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, mw.loader.using("mediawiki.Title")]; case 1: _a.sent(); mw.Title.newFromImg = function (img) { var matches, i, regex; var thumbPhpRegex = /thumb\.php/, regexes = [ /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s/]+)\/[^\s/]+-[^\s/]*$/, /\/[a-f0-9]\/[a-f0-9]{2}\/([^\s/]+)$/, /\/([^\s/]+)\/[^\s/]+-(?:\1|thumbnail)[^\s/]*$/, /\/([^\s/]+)$/, ], recount = regexes.length, src = img.jquery ? img[0].src || img[0].dataset.lazySrc : img.src || img.dataset.lazySrc; matches = src.match(thumbPhpRegex); if (matches) { return mw.Title.newFromText("File:".concat(mw.util.getParamValue("f", src))); } var decodedSrc = decodeURIComponent(src); for (i = 0; i < recount; i++) { regex = regexes[i]; matches = decodedSrc.match(regex); if (matches && matches[1]) { return mw.Title.newFromText("File:".concat(matches[1])); } } return null; }; if (["loading", "loaded", "executing", "ready", "error"].includes(mw.loader.getState("mediawiki.page.gallery.slideshow"))) { getImageInfo_1 = mw.GallerySlideshow.prototype.getImageInfo; mw.GallerySlideshow.prototype.getImageInfo = function ($img) { if ($img.attr("src") === undefined) { $img.attr("src", $img.data("lazy-src")); } return getImageInfo_1.bind(this)($img); }; $("li.gallerycarousel").remove(); mw.util.$content.find(".mw-gallery-slideshow").each(function () { new mw.GallerySlideshow(this); }); } if (!(mw.config.get("wgMediaViewerOnClick") && ["loading", "loaded", "executing", "ready"].includes(mw.loader.getState("mmv.bootstrap.autostart")))) return [3, 3]; return [4, mw.loader.using("mmv.bootstrap.autostart")]; case 2: _a.sent(); $.proxy(mw.mmv.bootstrap, "processThumbs")(mw.util.$content); _a.label = 3; case 3: return [2]; } }); }); } var fixWikiLove, useCustomSidenavBlock, addPortletLink, applyPageTools, externalLinkConfirm, noteTAIcon; return __generator(this, function (_a) { switch (_a.label) { case 0: fixWikiLove = function () { return __awaiter(void 0, void 0, void 0, function () { var $wikiLoveBtn; return __generator(this, function (_a) { switch (_a.label) { case 0: $wikiLoveBtn = $("#moe-page-tools a#ca-wikilove"); if (!$wikiLoveBtn.length) { return [2]; } return [4, mw.loader.using(["ext.wikiLove.local"])]; case 1: _a.sent(); $wikiLoveBtn.on("click", function (e) { e.preventDefault(); $.wikiLove.openDialog(); }); return [2]; } }); }); }; useCustomSidenavBlock = function () { var $block = $("aside#moe-global-siderail #moe-custom-sidenav-block"); if (!$block.length) { $block = $("<div>", { "class": "moe-card", id: "moe-custom-sidenav-block" }); $block.append($("<div>", { "class": "mw-parser-output" }).append($("<h2>", { text: "自定义工具" }), $("<ul>", { id: "moe-custom-sidenav-block-list" }))); $("aside#moe-global-siderail .moe-siderail-sticky").before($block); } return $block; }; addPortletLink = function (portletId, href, text, id, tooltip, accesskey, nextnode) { var $block = useCustomSidenavBlock(); var $li = $("<li>", { id: id, "data-portletId": portletId, "data-nextnode": nextnode }).append($("<a>", { text: text, href: href, title: tooltip, accesskey: accesskey })); $block.find("#moe-custom-sidenav-block-list").append($li); return $li.get(0); }; try { Object.defineProperties(window, { addPortletLink: { value: addPortletLink, configurable: true }, useCustomSidenavBlock: { value: useCustomSidenavBlock, configurable: true } }); } catch (e) { console.warn("[MoeSkin] addPortletLink", "Faild to bind global variables", e); } return [4, mw.loader.using(["mediawiki.util"])]; case 1: _a.sent(); Reflect.defineProperty(mw.util, "addPortletLink", { value: addPortletLink, configurable: true }); mw.hook("moeskin.addPortletLink").fire({ addPortletLink: addPortletLink, useCustomSidenavBlock: useCustomSidenavBlock }); applyPageTools = function () { var usePageTools = function () { return $("main > #moe-article > #moe-page-tools-container > #moe-page-tools"); }; var usePageToolsButton = function () { return usePageTools().find(".content-actions > a:first-of-type").clone().removeAttr("id href").removeClass("selected").find(".tooltip, .xicon").empty().end(); }; var addPageToolsButton = function (icon, tooltip, type) { if (type === void 0) { type = "action"; } var $pageTools = usePageTools(); var $button = usePageToolsButton(); $button.find("> .xicon").append(icon || "?"); $button.find("> .tooltip").text(tooltip); switch (type) { case "extra": $($pageTools.find(".tools-extra")).prepend($button); break; case "action": default: $($pageTools.find(".content-actions #ca-more-actions")).before($button); break; } return $button; }; mw.hook("moeskin.pagetools").fire({ usePageTools: usePageTools, usePageToolsButton: usePageToolsButton, addPageToolsButton: addPageToolsButton }); }; externalLinkConfirm = function () { return __awaiter(void 0, void 0, void 0, function () { var getConfirmMessage; var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: return [4, mw.loader.using(["ext.gadget.site-lib", "oojs-ui-windows", "oojs-ui-core"])]; case 1: _b.sent(); getConfirmMessage = function (url) { var $wrapper = $("<div>", { style: "text-align: center" }); $wrapper.append($("<div>", { text: wgULS("您点击了一个外部链接:", "您點選了一個外部連結:") })); $wrapper.append($("<strong>", { text: url.href })); $wrapper.append($("<div>", { text: wgULS("此网页不属于萌娘百科,我们不保证其安全性,请谨慎选择是否继续访问。", "此網頁不屬於萌娘百科,我們不保證其安全性,請謹慎選擇是否繼續訪問。") })); return $wrapper; }; (_a = document.getElementById("mw-content-text")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", function (e) { return __awaiter(void 0, void 0, void 0, function () { var anchor, hrefText, hrefURL, response; return __generator(this, function (_a) { switch (_a.label) { case 0: if (e.target.tagName !== "A") { return [2]; } anchor = e.target; hrefText = anchor.getAttribute("href"); if (!hrefText || hrefText.startsWith("#") || hrefText.startsWith("javascript:") || anchor.classList.contains("image")) { return [2]; } hrefURL = new URL(anchor.href); if (hrefURL.host.endsWith("moegirl.org.cn") || hrefURL.host.endsWith("moegirl.org")) { return [2]; } e.preventDefault(); return [4, OO.ui.confirm(getConfirmMessage(hrefURL))]; case 1: response = _a.sent(); response && window.open(hrefURL.href); return [2]; } }); }); }); return [2]; } }); }); }; noteTAIcon = function () { var noteTAbutton = $('<button tabindex="0" type="button"/>') .append('<span style="padding:1px 3px;">汉漢</span>'); var noteTAicon = $("<span/>").attr({ id: "p-noteTA-moeskin", role: "navigation", "class": "noteTA-button", title: "本页使用了标题或全文手工转换" }).append(noteTAbutton); $("#p-languages-group").append(noteTAicon); }; return [4, $.ready]; case 2: _a.sent(); fixWikiLove(); fixImage(); applyPageTools(); if (Reflect.has(document, "ontouchstart") && !location.host.startsWith("mobile")) { externalLinkConfirm(); } if ($(".noteTA")[0]) { noteTAIcon(); } return [2]; } }); }); })(); /* </pre> */