Skip to content

[BUG] README.md 无法执行JS(已关闭:过滤 README 文件中的脚本) #2957

Description

@xhwsd

请确认以下事项

  • 我已确认阅读并同意 AGPL-3.0 第15条 。
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条 。
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档。

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络 ,依赖或操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。

OpenList 版本(必填)

v4.2.5

使用的存储驱动(必填)

本机存储(其它也是)

问题描述(必填)

仓库查清楚了:README 的 JavaScript 是从前端 v4.2.0 开始失效的。

原因不是官方专门提交了“禁止 README JS”,而是一次 Markdown 渲染器重构造成的:

  1. v4.1.10 及以前使用 solid-markdown,Markdown 标签由 SolidJS 逐个创建为 DOM 元素。

  2. 2026-02-18 的提交 [ed932e4](https://github.com/OpenListTeam/OpenList-Frontend/commit/ed932e4490f7883102557c48b037fd584f769abc) 为了升级 Remark、重写 Markdown 渲染并“安全渲染 HTML”:

    • 删除 solid-markdown
    • 加入 rehype-sanitize
    • 把 Markdown 转成 HTML 字符串
    • 最后通过 innerHTML 插入页面
  3. 这个提交首次进入正式版 v4.2.0。从此 <script> 要么被净化器删除,要么成为不会执行的 innerHTML 脚本节点。

  4. v4.2.2 的提交 [6583e11](https://github.com/OpenListTeam/OpenList-Frontend/commit/6583e11a2ac240783625596237fb2c0ed3c831a5) 修复了“过滤 README 脚本”开关未生效的问题,但只做到:

if (sanitize) {
  processor.use(rehypeSanitize)
}

它没有恢复脚本执行。因此关闭开关只能保留 <script>,仍无法运行。

你现在的 v4.2.5 仍是这个实现:

<Box innerHTML={markdownHTML()} />

[查看 v4.2.5 当前源码](https://github.com/OpenListTeam/OpenList-Frontend/blob/v4.2.5/src/components/Markdown.tsx#L254-L313)

结论:这是 v4.2.0 Markdown 重构带来的行为回退;仓库提交记录没有说明“故意彻底取消 README JS”。v4.2.2 虽然恢复了过滤开关,但没有完整恢复旧版执行能力,属于没有补完整的兼容问题。

日志(必填)

不需要

配置文件内容(必填)

不需要

复现链接(可选)

No response

AI生成内容(可选)

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidInvalid Content/Cannot Reproduce

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions