MediaWiki:Gadget-darkmode.js

来自Minecraft Wiki
跳转到导航 跳转到搜索
其他语言中

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
  • Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → 选项),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件。
/**
 * Toggle for dark mode
 * 
 * @author [[User:Jayden]]
 * @see Based on https://runescape.wiki/w/MediaWiki:Gadget-skinTogglesNew.js
 */
;(function ($, mw) {
	var DARK_COOKIE = 'darkmode',
		THEME_COOKIE = 'theme',
		isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark' || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true'),
		isMobile = mw.config.get('wgMFMode') !== null,
		portletLink;
	
	var conv = require('ext.gadget.HanAssist').conv;

	$(function () {
		$.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', { expires: 365, path: '/' });

		portletLink = mw.util.addPortletLink(
			( isMobile ? 'p-navigation' : 'p-personal' ),
			'',
			( isMobile ? conv({ hans: '切换深色模式', hant: '切換深色模式' }) : '' ),
			'pt-dm-toggle',
			conv({ hans: '切换深色模式', hant: '切換深色模式' }),
			null,
			$('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
		);

		$(portletLink).find('a').click(function (e) {
			e.preventDefault();

			isUsingDarkmode = !isUsingDarkmode;
			$.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', { expires: 365, path: '/' });
			$.cookie(DARK_COOKIE, isUsingDarkmode, { expires: 365, path: '/' });

			if (isUsingDarkmode) {
				mw.loader.using(['wgl.theme.dark']).then(function() {
					$('body').addClass('wgl-theme-dark');
					$('body').removeClass('wgl-theme-light');
					mw.hook('wgl.themeChanged').fire('dark');
				});
			} else {
				$('body').addClass('wgl-theme-light');
				$('body').removeClass('wgl-theme-dark');
				mw.hook('wgl.themeChanged').fire('light');
			}
		});
	});
})(jQuery, mediaWiki);