siyuan-note / siyuan

A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang.
https://b3log.org/siyuan
GNU Affero General Public License v3.0
23.18k stars 1.64k forks source link

改进剪藏 #13306

Open TCOTC opened 1 day ago

TCOTC commented 1 day ago

网页:https://mp.weixin.qq.com/s/QeFcTAbN_7brnjC1HrfPmw

  1. 会在行内元素之后换行
  2. 没有剪藏到文本加粗

image

88250 commented 1 day ago

@ruin1990 帮忙看下

image

ruin1990 commented 19 hours ago

似乎是section节点包裹导致的,之前逻辑没判断,我需要验证下 因为样式匹配到了按理说应该换行

white-space: normal;
word-wrap: break-word; important!

加粗的问题,样式表里是font-weight: bold;,没有用b标签,这个原先能判断到吗?@88250 image 这部分也是需要插件那边给对应的span用b标签包裹起来嘛

88250 commented 19 hours ago

样式的判断不了,不用改动

---原始邮件--- 发件人: @.> 发送时间: 2024年11月29日(周五) 下午5:13 收件人: @.>; 抄送: @.**@.>; 主题: Re: [siyuan-note/siyuan] 改进剪藏 (Issue #13306)

似乎是section节点包裹导致的,之前逻辑没判断,我需要验证下 因为样式匹配到了按理说应该换行 white-space: normal; word-wrap: break-word; important!
加粗的问题,样式表里是font-weight: @.*** image.png (view on web)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

ruin1990 commented 18 hours ago

问题1我测试了下屏蔽section节点可以解决,不过我没搞懂section这个网页为啥配置了span独立一行的样式却没有换行,单独写了个静态页面似乎没有复现此问题

@TCOTC 针对问题2: 加粗的如果确实有这个需求,可以在网页控制台直接输入下面代码以后再剪藏,可以解决加粗识别的问题,我验证了下你提供的网页应该是可以识别到了 image

按理说斜体也可以用类似的方法检测 但是也是正如@88250所述,目前对样式无法识别,如果要做,那就是加入到chrome插件里处理。

// 获取所有应用了 font-weight: bold 的元素
const boldElements = document.querySelectorAll('*');

boldElements.forEach(element => {
  const style = window.getComputedStyle(element);

  // 判断是否具有 font-weight: bold
  if (style.fontWeight === 'bold' || style.fontWeight === '700') { // '700' 是 bold 的常见数值
    // 获取当前元素的文本内容
    const textContent = element.textContent;

    // 将文本内容包裹在 <b> 标签中
    element.innerHTML = `<b>${textContent}</b>`;
  }
});
ruin1990 commented 18 hours ago

补充个斜体的预处理脚本(未验证)

// 获取所有元素
const allElements = document.querySelectorAll('*');

allElements.forEach(element => {
  const style = window.getComputedStyle(element);

  // 判断是否具有 font-style: italic
  if (style.fontStyle === 'italic') {
    // 获取当前元素的文本内容
    const textContent = element.textContent;

    // 将文本内容包裹在 <i> 标签中
    element.innerHTML = `<i>${textContent}</i>`;
  }
});
ruin1990 commented 18 hours ago

需不需要加一个实验性功能的选项卡,插件的每次改动其实都有点慌啊,怕无法兼容到所有的场景

88250 commented 17 hours ago

有道理,帮忙 PR,包括本次的 br 判断,多谢

---原始邮件--- 发件人: @.> 发送时间: 2024年11月29日(周五) 晚上6:48 收件人: @.>; 抄送: @.**@.>; 主题: Re: [siyuan-note/siyuan] 改进剪藏 (Issue #13306)

能不能加一个实验性功能的选项卡,插件的每次改动其实都有点慌啊,怕无法兼容到所有的场景

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

ruin1990 commented 17 hours ago

我得先研究一下,实验性功能的选项卡这个我还没想好怎么加,是原来的剪藏界面还是就另起一个html?

88250 commented 17 hours ago

加载已有选项后面吧,默认不勾选

---原始邮件--- 发件人: @.> 发送时间: 2024年11月29日(周五) 晚上7:11 收件人: @.>; 抄送: @.**@.>; 主题: Re: [siyuan-note/siyuan] 改进剪藏 (Issue #13306)

我得先研究一下,实验性功能的选项卡这个我还没想好怎么加,是原来的剪藏界面还是就另起一个html?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>