您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在指定网站的表格上方添加按钮,点击将表格以Markdown格式复制到剪贴板
当前为
// ==UserScript== // @name HTML表格转化为Markdown表格 // @namespace http://tampermonkey.net/ // @version 0.6 // @description 在指定网站的表格上方添加按钮,点击将表格以Markdown格式复制到剪贴板 // @author lsovaber // @match https://blog.csdn.net/* // @match https://www.cnblogs.com/* // @match https://www.runoob.com/* // @match https://www.jianshu.com/* // @match https://*.zhihu.com/* // @match https://www.quanxiaoha.com/* // @match https://www.geeksforgeeks.org/* // @match https://online.stat.psu.edu/stat800/* // @match https://www.javatpoint.com/* // @match https://cloud.tencent.com/* // @match https://scikit-learn.org/* // @match https://www.w3school.com.cn/* // @match https://www.w3cschool.cn/* // @match http://c.biancheng.net/* // @match https://juejin.cn/* // @grant GM.setClipboard // @license MIT // ==/UserScript== (function () { 'use strict'; const NL = "\n"; // 存放Markdown表格 let processor = document.createElement("processor"); // 获取<table> let table = document.getElementsByTagName("table"); // 大多数网站块代码在<pre>里 let pre = document.getElementsByTagName("pre"); setTimeout(init, 500); function convertTableElementToMarkdown(tableEl) { const rows = []; const trEls = tableEl.getElementsByTagName('tr'); for (let i = 0; i < trEls.length; i++) { const tableRow = trEls[i]; const markdownRow = convertTableRowElementToMarkdown(tableRow, i); rows.push(markdownRow); } return rows.join(NL); } function convertTableRowElementToMarkdown(tableRowEl, rowNumber) { const cells = []; const cellEls = tableRowEl.children; for (let i = 0; i < cellEls.length; i++) { const cell = cellEls[i]; cells.push(cell.innerText + ' |'); } let row = '| ' + cells.join(" "); if (rowNumber === 0) { row = row + NL + createMarkdownDividerRow(cellEls.length); } return row; } function createMarkdownDividerRow(cellCount) { const dividerCells = []; for (let i = 0; i < cellCount; i++) { dividerCells.push('---' + ' |'); } return '| ' + dividerCells.join(" "); } function convertTable(x) { const content = "<table>" + x.innerHTML + "</table>"; processor.innerHTML = content.replace(/\s+/g, ' '); const tables = processor.getElementsByTagName('table'); let markdownResults = ''; if (tables) { for (let e of tables) { const markdownTable = convertTableElementToMarkdown(e); markdownResults += markdownTable + NL + NL; } let p = document.createElement("p"); p.innerHTML = "复制成功"; GM.setClipboard(markdownResults); x.parentNode.insertBefore(p, x); } else { console.log('No table found'); } } function copyCode(x) { let text; if (window.location.href.indexOf("juejin") !== -1) { text = x.innerText.replace("javascript.*复制代码", "XXXX"); } else { text = x.innerText; } GM.setClipboard(text); } function createButtons(x, type) { for (let i = 0; i < x.length; i++) { let button = document.createElement("button"); button.innerText = `Copy ${type}`; button.style.zIndex = '999'; // 点击按钮,进行转化 button.addEventListener('click', function () { if (type === "Table") { convertTable(x[i]) } else { copyCode(x[i]); } }) x[i].parentNode.insertBefore(button, x[i]); } } function init() { createButtons(table, "Table"); createButtons(pre, "Code"); if (window.location.href.indexOf("runoob") !== -1) { // 菜鸟教程的代码块 let example_code = document.getElementsByClassName("example_code"); createButtons(example_code, "Code"); } else if (window.location.href.indexOf("cnblogs") !== -1) { let cn_blogs = document.getElementsByClassName("code"); createButtons(cn_blogs, "Code"); } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址