您需要先安装一个扩展,例如 篡改猴、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();
- })();