问题
保存帖子内容后,它会在渲染后的帖子中显示大约 4 毫秒,然后出现一个加载圆圈 2 毫秒,之后就消失了:
解决方案
如果它在预览器中渲染是偶然的,并且出于我不知道的安全原因,它被有意地从渲染后的帖子中清除,您能否至少将 <button> 替换为 <button disabled>?
我之所以这样问,是因为我经常看到 <code> 和 <kbd> 的误用,而 <button> 在教程和重现步骤中会更具语义。
保存帖子内容后,它会在渲染后的帖子中显示大约 4 毫秒,然后出现一个加载圆圈 2 毫秒,之后就消失了:
如果它在预览器中渲染是偶然的,并且出于我不知道的安全原因,它被有意地从渲染后的帖子中清除,您能否至少将 <button> 替换为 <button disabled>?
我之所以这样问,是因为我经常看到 <code> 和 <kbd> 的误用,而 <button> 在教程和重现步骤中会更具语义。
我不确定这是否算是一个 bug。我理解你的困惑。
要防止 HTML 标签和属性/类名被过滤掉,需要在 Discourse 核心或插件中明确允许它们。
例如,默认列表可以在这里找到:
也可以只为预览允许一个标签。例如,图像控件有几个标签/类名/属性组合。
你在预览中看到按钮是因为这里允许的标签产生了副作用。
然而,disabled 属性被忽略了,因为它没有被定义。
我没有检查允许列表是如何解析的,我想知道这是否是预期的行为。
目前看来,无论属性如何,该标签都被允许了。我本以为如果你不精确使用,例如 \u003cbutton class=\"alt-text-edit-ok btn btn-primary\"\u003e,按钮就不会被渲染。
你可以在帖子渲染后创建一个插件来允许 \u003cbutton\u003e。如果你需要帮助,请告诉我。
@Arkshine,我很感激。不过,我不是实例管理员。我只是在整理内容时注意到了这一点。
这是预览器中的 HTML5 和 CSS3 表示与最终渲染不同的众多情况之一,这意味着为 Discourse 编写内容可能很困难。当编辑被禁用或仅限于非常短的时间范围(实例范围内)时,情况尤其如此。
我明白了;这说得通!我同意这不是一种很好的体验。
如果你愿意,我制作了一个小插件,允许使用带有 disabled 属性的 <button>:GitHub - Arkshine/discourse-markdown-allowlist
不幸的是,在这种情况下你无法进行设置,所以如果你想添加另一个标签,你需要自己 fork 我的仓库并在此处添加:discourse-markdown-allowlist/assets/javascripts/lib/discourse-markdown/custom_allow_list.js at main · Arkshine/discourse-markdown-allowlist · GitHub
@Arkshine,那个不能上游合并吗?我之所以这么问,是因为这会影响我使用的所有实例,而要求它们都为如此微不足道的事情进行补丁集成,可能是不现实的。
通常,我会针对这类问题在相关的 GitHub 存储库中创建一个 issue,但 Discourse 的 issue 部分被禁用了。
这里应该用 Contribute > Feature 而不是 GitHub 吗?因为 Contribute > Bug 不是这样的。
@Jagster,如果这个标签只是不可用,我会的。然而,预览器不能像预览器那样工作是一个 #contribute:bug。
你会如何将其归类为一个特性——你会如何重写标题以证明这一点?
Contribute > Feature 用于缺失的功能。Contribute > Bug 用于错误,而这里并不是错误。
也许你可以像使用 GitHub 的 Issue 板块一样来使用它?
我认为预览和渲染后帖子之间的不一致性可以合理地视为 Contribute > Bug(缺陷)。
解决方案可能是在预览中也阻止它,这意味着“在帖子中添加 <button> 支持”将成为一个有效的 Contribute > Feature(功能)请求;)
确实如此,@david。我本应该把它们分开:
抱歉,谢谢。