思源 0 篇文章

实现图片旋转 翻转后保存

实现图片旋转 翻转后保存
前言看到论坛有不少小伙伴想要图片旋转/翻转后能保存覆盖原图片的功能。虽然可以通过打开菜单打开外部程序编辑,但终究没在思源内操作方便。最近研究了下,实现了这个功能。支持 jpg,png,webp,bmp,gif(非动画)。注意:该操作会覆盖原图,请严格测试后谨慎使用,操作前做好备份。效果使用方法下载 browser-image-compression.js 放到 data/public 目录或使用在线地址,也可

刷新块或更新块

functionupdateBlock(node){awaitfetchSyncPost('/api/block/updateBlock',{"dataType":"dom","data":node.outerHTML,"id":node.dataset.nodeId})}‍

拦截 fetch 并添加头信息

asyncfunctionmyFetch(){constoriginalFetch=window.fetch;window.fetch=asyncfunction(url,...args){try{letconfig={};if(args.length>0&&typeofargs[0]==='object'){config=args[0];}//创建 Headers 对象以确保现有头部不会被覆盖 leth

Alist 增加视频跳转链接页面自动定位到指定时间播放的功能

Alist 增加视频跳转链接页面自动定位到指定时间播放的功能
功能介绍:在 Alist 页面复制播放的视频链接到剪切板,链接中自动附上当前已播放的时间把链接粘贴到思源笔记中点击刚才粘贴的视频链接,自动跳转到 Alist 页面并自动定位到刚才已播放的时间点效果:代码如下(把以下代码放到 alist 管理页面,设置-》全局-》自定义内容里即可)<script>(function(){//监听哪些视频格式 constvideos=['.mp4','.avi','.webm','.

思源性能优化

概述不同硬件配置、不同操作系统平台上性能表现是不一样的。另外,随着数据增多,性能下降无法避免。所以我们可能需要改变使用方式并调整一些配置项来提升性能,以获得更流畅的使用体验。整体性能内容块数量:内容块数量对性能影响范围较大,比如展开文档树、搜索、数据写入等。但也不必太过担心,通常情况下内容块数量在百万这个量级下不会产生太大影响,除非每个块的大小较大系统环境:操作系统当前负载会影响整体性能网络环境:通

监控元素出现

functionobserveElementExist(selector,callback){consthandleMutations=(mutationsList,observer)=>{for(letmutationofmutationsList){if(mutation.type==='childList'){mutation.addedNodes.forEach(node=>{if(node

思源编辑器输入事件

(()=>{//编辑器输入事件 onEditorInput((editor)=>{//获取光标所在元素 constcurrEl=getCursorElement();console.log('当前元素',currEl);//获取当前块 constcurrBlock=currEl.closest('[data-type]');console.log('当前块',currBlock);});//编辑器输入事件

[css] 代码块滚动时语言和按钮固定在编辑器顶部

[css] 代码块滚动时语言和按钮固定在编辑器顶部
*[css]代码块滚动时语言和按钮固定在编辑器顶部-链滴*[https://ld246.com/article/1728146248791](https://ld246.com/article/1728146248791)*对很长的代码块比较友好,效果是始终显示代码块的语言、复制按钮和更多菜单按钮:[图片]代码片段:/*代码块滚动时语言和按钮固定在编辑器顶部 CSS 片段*//*authorbyJeff

块自定义元素和属性

seehttps://github.com/siyuan-note/siyuan/issues/12684seehttps://github.com/88250/lute/issues/206seehttps://github.com/88250/lute/blob/3fb25e60dad57f08b1637539a0fcdf03c366abdb/protyle.go#L693 关联:行内自定义元素和

判断代码片段是否禁用

seehttps://ld246.com/article/1726930314271//判断脚本是否开启//通过唯一标志符判断是否启用此脚本,注释中的 uuid 不要删除,也可以改成其他全局唯一字符串//也可以通过/api/snippet/getSnippet 来判断脚本开启状态,这里采用判断脚本是否存在的方式//调用方式 isEnabled()letscriptId='';functionisEnable

新建文档的时候自动设置自定义的图标

//功能:建文档的时候自动设置为自定义的某个图标//seehttps://ld246.com/article/1726920727424(()=>{//默认图标//根据 iconType 参数不同而不同//当 iconType 参数是 keyword 时,该值是关键词,如:嘿嘿,获取方式参考 iconType 参数//当 iconType 参数是 unicode 时,该词是表情 unicode,如:1f4c4,获取方式请参考

批量转换文档的标题

seehttps://ld246.com/article/1726880977052//!jsreturn(async()=>{///////参数配置区/////////需要转换的文档 idconstdocBlockId='20240916174656-fv3lpy5';//源标题 constsrcHead='h2';//目标标题 consttoHead='h3';///////主逻辑区/////////

给编辑器增加标尺

给编辑器增加标尺
​//功能:给编辑器增加标尺//seehttps://ld246.com/article/1725849206361(()=>{////////////配置区//////////////////////标尺的间隔大小,默认 50(50 代表 50px 高度)construlerGaps=50;////////////主逻辑区////////////////////addRulerStyle();whenEl

插入音频块示例

//audioURLvaraudioSrc="";//父 id 或文档 id,必填 varparentID="20240912201455-z7c6sgc";//插入到哪个块下面,为空插入到第一行 varpreviousID="20240919194802-ig3zntk";//生成块 idvarnewNodeId=Lute.NewNodeID();//生成更新时间 varupdated=formatDateTi

获取选中文字所在的元素?如果跨多个元素呢?

在 JavaScript 中获取选中文字所在的元素可以通过 window.getSelection()​方法来实现。此方法返回一个 Selection​对象,该对象提供了有关当前文档中选定文本的信息。如果选中的文本跨越了多个元素,可以通过 Selection​对象的 getRangeAt()​方法来获取选定范围的信息。getRangeAt()​方法返回一个 Range​对象,该对象描述了选定文本的范围。下面是一个