比如,将文内所有 2 级标题转换为 3 级标题
这个需求很多人都需要,特别头疼
@88250 打扰一下
比如,将文内所有 2 级标题转换为 3 级标题
这个需求很多人都需要,特别头疼
@88250 打扰一下
可以用下面的脚本实现。
使用方法:
在任意文档中输入 {{}}
在弹出的输入框内填入以下代码即可
代码:
//!js
return (async () => {
/////// 参数配置区 ///////
// 需要转换的文档id
const docBlockId = '20240916174656-fv3lpy5';
// 源标题
const srcHead = 'h2';
// 目标标题
const toHead = 'h3';
/////// 主逻辑区 ///////
// 防止死循环
if(isRunning()) return render(`执行中,不必重复执行`);
// sql查询
const sql = `select * from blocks where type='h' and subtype='${srcHead.toLowerCase()}' and root_id='${docBlockId}'`;
const result = await query(sql);
// 无数据提示
if(result.length === 0) return error('未找到任何数据');
// 转换标题
await convertHead(result);
// 渲染结果
return render('已转换完成');
/////// 功能函数区 ///////
// 标题转换函数
async function convertHead(result) {
for(const head of result) {
const data = "#".repeat(toHead.split('').pop()) + " " + head.content
//console.log(data);
await fetchSyncPost('/api/block/updateBlock', {dataType:"markdown", id:head.id, data: data});
}
}
// 查询SQL函数
async function query(sql) {
const result = await fetchSyncPost('/api/query/sql', { "stmt": sql });
if (result.code !== 0) {
console.error("查询数据库出错", result.msg);
return [];
}
return result.data;
}
// 渲染结果函数
function render(html, style) {
onRender('.b3-form__space--small').then((container) => {
container.style = style || 'color:var(--b3-card-info-color);';
container.innerHTML = html;
});
return [];
}
// 渲染错误输出
function error(html, style) {
return render(html, style || 'color:red;');
}
// 监听dom渲染
function onRender(selector) {
return new Promise(resolve => {
const check = () => {
let el = item.querySelector(selector);
if (el) resolve(el); else requestAnimationFrame(check);
};
check();
});
}
// 检测是否正在执行,防止死循环
function isRunning(delay) {
if(window.convertHeadRunning) return true;
window.convertHeadRunning = true;
// 这里保证3秒钟内只会被执行一次,可根据您脚本具体执行时间进行调整(这种调整通常可停止某些原因导致的死循环)
setTimeout('window.convertHeadRunning = false', delay || 3000);
return false;
}
})();
效果:
Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。
Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。
Open Source, Open Mind, Open Sight, Open Future!
生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。
本标签主要用于分享网络空间安全专业的学习笔记
网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。
又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。
GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
Latke 是一款以 JSON 为主的 Java Web 框架。
以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。
Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
找到自己的位置,萌新烦恼少。
Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。
uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。
哪里都缺人,哪里都不缺人。
阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。
Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。
知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。
百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于