2023年政策修订增补工作正在进行中,欢迎参与!
User:妹空酱/LyricColorizition.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/User:%E5%A6%B9%E7%A9%BA%E9%85%B1/LyricColorizition.js?_=1}-
/* 此脚本功能为提供快速的歌词上色方法。 引入此脚本将在编辑页面右侧显示一个颜色管理面板。 点击并添加颜色即可。 '''本脚本属随手作品,代码无可读性,请勿参考'''。 本脚本仅支持现代浏览器。 本脚本依赖Wikiplus的前端组件。因此你需要启用Wikiplus。 使用说明: 单击颜色,可以将当前选中的文字使用color模板着色。再次单击可以取消上色。 双击颜色,可以删除这一颜色。 Ctrl+1~Ctrl+9将分别作为颜色的快捷键,例如Ctrl+1就是第一种颜色。 一些调用建议: 可以新建一个书签,内容为: javascript:mw.loader.load('http://zh.moegirl.org/index.php?title=User:%E5%A6%B9%E7%A9%BA%E9%85%B1/LyricColorizition.js&action=raw&ctype=text/javascript'); 需要本脚本时点击书签即可。 */ /* By: Eridanus Sora */ /* global Wikiplus */ /* global mw */ 'use strict'; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } $(document).ready(function () { var LC = (function () { function LC(element) { _classCallCheck(this, LC); var self = this; this.area = element; this.colorList = []; var controlPanel = $('<div>').css({ 'position': 'fixed', 'top': '40%', 'right': '0px', 'min-height': '80px', 'min-width': '70px', 'width': 'auto', 'background-color': '#ffffff', 'border': '1px black solid' }).addClass('LC-Container'); controlPanel.append(this.generateColorBlock('#FFFFFF', '添加颜色', function () { Wikiplus.createDialogBox('添加颜色', $('<div>').append($('<input>').attr({ 'placeholder': '颜色', 'id': 'LC-ColorInput' })).append($('<br>')).append($('<input>').attr({ 'placeholder': '角色名', 'id': 'LC-CharaInput' })).append($('<hr>')).append($('<div>').addClass('Wikiplus-InterBox-Btn').attr('id', 'LC-Apply').text('确认')), 600, function () { $('#LC-Apply').click(function () { var color = $('#LC-ColorInput').val(); var chara = $('#LC-CharaInput').val(); $('.Wikiplus-InterBox-Close').click(); $('.LC-Add').before(self.generateColorBlock(color, chara, function () { console.log(color + ' - ' + chara); var text = self.area.val(); var start = self.area[0].selectionStart; var end = self.area[0].selectionEnd; if (start === end) return; var selectedText = self.area.val().slice(start, end); var regResult = selectedText.match(/^{{color[^]*\|[^]*\|([^.]+)[^]*}}$/m); if (regResult !== null && regResult[1] !== undefined) { //去除颜色 self.area.val('' + text.slice(0, start) + regResult[1] + text.slice(end, text.length)); self.area[0].setSelectionRange(start, start + regResult[1].length); } else { //加上去 self.area.val(text.slice(0, start) + '{{color|' + color + '|' + text.slice(start, end) + '}}' + text.slice(end, text.length)); self.area[0].setSelectionRange(start, end + 11 + color.length); } })); }); }); }, 'LC-Add')); $('body').append(controlPanel); this.area.keydown(function (e) { if (e.ctrlKey && 49 <= e.which && e.which <= 57) { e.preventDefault(); $('.LC-Color')[e.which - 49] && $('.LC-Color')[e.which - 49].click(); } }); } _createClass(LC, [{ key: 'generateColorBlock', value: function generateColorBlock(color, text, event) { var className = arguments.length <= 3 || arguments[3] === undefined ? 'LC-Color' : arguments[3]; return $('<div>').css({ 'width': '50px', 'height': '50px', 'margin': '10px', 'padding': '3px', 'font-size': '12px', 'line-height': '50px', 'font-weight': 'bold', 'text-align': 'center', 'float': 'left', 'background-color': color, 'border': '1px black solid', 'cursor': 'pointer' }).text(text).addClass(className).click(event).dblclick(function () { if (className !== 'LC-Color') return; $(this).fadeOut('fast', function () { $(this).remove(); }); }); } }, { key: 'throwError', value: function throwError(message) { var error = new Error(); console.log('[CRITICAL] ' + message); console.log(error); } }]); return LC; })(); if (mw.config.values.wgAction === 'edit') { console.log(new LC($('#wpTextbox1'))); } });