d0j1a1701 / LiteLoaderQQNT-Markdown

为QQ添加Markdown渲染支持
Do What The F*ck You Want To Public License
105 stars 12 forks source link

[期望]代码块优化 #75

Open yhzcake opened 1 month ago

yhzcake commented 1 month ago

f97922e93902618ecd03b7a20055e6e1 image image 如图,代码块超过消息框大小时希望可以在下方设置滚动条方便使用 (使用shift加鼠标滚轮可以滚动,但是显示代码类型并且点击复制的图标会跟着移动) 代码原文


// 选择一个目标节点,这里我们选择body,也可以根据需要选择更具体的节点 const targetNode = document.body; // 配置观察选项: const config = { childList: true, subtree: true }; // 当观察到变化时执行的回调函数 const callback = function(mutationsList, observer) { for(const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { // 检查是否是我们要找的元素 if (node.nodeType === 1 && node.classList.contains('text-normal')) { // 检查这个元素是否包含具有'message-link-preview'类的子元素 const previewChild = node.querySelector('.message-link-preview'); if (previewChild) { // 删除这个text-normal元素中的所有text元素,这里假设text是直接子节点且是文本节点或特定标签 node.querySelectorAll('text').forEach(textNode => { if (textNode.nodeType === 3 && /\S/.test(textNode.nodeValue)) { // 删除非空白文本节点 node.removeChild(textNode); } else if (textNode.nodeType === 1 && textNode.tagName.toLowerCase() === 'text') { // 删除<text>标签 node.removeChild(textNode); } }); } } }); } } }; // 创建一个观察器实例并传入回调函数 const observer = new MutationObserver(callback); // 开始观察已配置的突变 observer.observe(targetNode, config); // 后续,你可以随时停止观察 // observer.disconnect();

ps:垃圾文心一言复制出来的代码没格式化,导致我一开始还以为是bug...难绷

yhzcake commented 1 month ago

另外,与link_preview一起使用时,本插件会将link_preview生成的文字复制一份text 在使用linkify时会将两份文字同时与正常链接连接,形成新的错误链接 并且关闭linkify之后qq自带的链接转换也失效了

yhzcake commented 3 weeks ago

如图 image