您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
add CodeMirror Editor for comment & topic
// ==UserScript== // @name Geekhub Markdown Editor // @namespace https://geekhub.com/ // @version 4 // @description add CodeMirror Editor for comment & topic // @author dallaslu // @match https://geekhub.com/* // @match https://www.geekhub.com/* // @grant none // @require https://cdn.jsdelivr.net/npm/codemirror/lib/codemirror.min.js // @require https://cdn.jsdelivr.net/npm/codemirror/mode/markdown/markdown.js // @require https://cdn.jsdelivr.net/npm/codemirror/mode/gfm/gfm.js // @require https://cdn.jsdelivr.net/npm/codemirror/addon/mode/overlay.js // ==/UserScript== (function() { 'use strict'; var ghSchemeButtons = { 'light': 'dark', 'dark': 'darcula', 'solar': 'darcula', 'ocean': 'darcula', 'jade': 'default' }; function init() { var cmElement = document.querySelector('.CodeMirror'); if(!cmElement){ var textElement = document.getElementById('comment-box') || document.getElementById('post_content') || document.getElementById('second_hand_content') || document.getElementById('molecule_content') || document.getElementById('group_buy_content') || document.getElementById('service_content'); if(textElement){ var theme = ''; for (var btn in ghSchemeButtons) { var schemeBtn = document.getElementById(btn); if (schemeBtn && !schemeBtn.classList.contains('hidden')) { theme = ghSchemeButtons[btn]; break; } } theme = theme || 'darcula'; loadStyles('https://cdn.jsdelivr.net/npm/codemirror/lib/codemirror.css'); loadStyles('https://cdn.jsdelivr.net/npm/codemirror/theme/darcula.css'); var cm = CodeMirror.fromTextArea(textElement, { mode : { name : "gfm", tokenTypeOverrides : { emoji : "emoji" } }, lineWrapping : true, lineNumbers : false, theme: theme }); cm.on('change', function(){ cm.save(); }); // TODO clear with textarea after submit } } } function loadStyles(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = url; var head = document.getElementsByTagName("head")[0]; head.appendChild(link); } var observer = new MutationObserver(function(doc, observer) { init(); }); observer.observe(document, { characterData: true, childList: true, attributes: true, subtree: true, attributeOldValue: true, characterDataOldValue: true }); init(); })();