本帖最后由 edata 于 2025-9-1 13:02 编辑
论坛的代码区复制功能在chrome这类浏览器上复制不是很理想,可能有一些非法字符,导致复制后的格式不理想,没有换行效果。
使用篡改猴插件可以增加一个格式复制的功能,方便复制,
如果明经论坛能够自己修复这个问题是最好的,凑合用吧。
我使用的edge浏览器,安装了篡改猴扩展插件(tampermonkey),新建一个脚本替换内容保存即可。
edge使用篡改猴插件可能需要勾选开发者模式,才能生效。

- // ==UserScript==
- // @name 明经复制代码扩展
- // @namespace http://tampermonkey.net/
- // @version 2025-08-24
- // @description 复制明经论坛代码区的代码
- // @author edata
- // @match *://*.mjtd.com/*
- // @icon http://bbs.mjtd.com/favicon.ico
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // 复制到剪贴板函数(未使用)
- function copyToClipboard(text) {
- return new Promise((resolve, reject) => {
- if (navigator.clipboard) {
- navigator.clipboard.writeText(text).then(resolve).catch(reject);
- } else {
- // 兼容旧版浏览器的备用方法
- const textarea = document.createElement('textarea');
- textarea.value = text;
- textarea.style.position = 'fixed';
- document.body.appendChild(textarea);
- textarea.select();
- try {
- const successful = document.execCommand('copy');
- document.body.removeChild(textarea);
- successful ? resolve() : reject(new Error('复制失败'));
- } catch (err) {
- document.body.removeChild(textarea);
- reject(err);
- }
- }
- });
- }
- //转换html转义字符为正常字符
- function unescapeHTML(str) {
- return str.replace(/&(nbsp|lt|gt|amp|quot);/g, function(_, entity) {
- return {'nbsp':' ', 'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"' }[entity];
- });
- }
- //移除html标记(未使用)
- function removeTags(str) {
- if ((str === null) || (str === "")) {
- return false;
- } else {
- str = str.toString();
- }
- return str.replace(/<[^>]*>/g, "");
- }
- //移除换行<br />标记
- function removeBrTags(str) {
- if ((str === null) || (str === "")) {
- return false;
- } else {
- str = str.toString();
- }
- return str.replace(/<br.\/>/g, "");
- }
- // 主处理函数
- function addCopyButtons() {
- // 获取所有以"mc_code"开头的元素
- const elements = [];
- let index = 0;
- while (true) {
- const element = document.getElementById(`mc_code${index}`);
- if (!element) break;
- elements.push(element);
- index++;
- }
- // 处理每个找到的元素
- elements.forEach(element => {
- const titleElement = element.querySelector('.jssccodetitle');
- if (!titleElement) return;
- // 检查是否已添加按钮
- if (titleElement.querySelector('.copy-btn')) return;
- // 创建复制按钮
- const copyBtn = document.createElement('span');
- copyBtn.className = 'copy-btn';
- copyBtn.textContent = '格式复制';
- // 添加点击事件
- copyBtn.addEventListener('click', async () => {
- const textarea = element.querySelector('textarea');
- if (!textarea) return;
- var textStr=textarea.innerHTML;
- textStr=unescapeHTML(textStr);
- textStr=removeBrTags(textStr);
- try {
- //await copyToClipboard(textStr);
- //调用明经原有的复制函数,有成功提示
- setCopy(textStr,"代码已复制到剪贴板");
- } catch (err) {
- console.error(' 复制失败:', err);
- alert('复制失败,请手动复制内容');
- }
- });
- // 插入按钮
- titleElement.appendChild(copyBtn);
- });
- }
- <blockquote> //添加复制按钮
浏览器使用edge,插件使用的是篡改猴5.3.3
使用效果参考
|