问题
保存帖子内容后,它会在渲染后的帖子中显示大约 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 部分被禁用了。
@Jagster,如果这个标签仅仅是不可用的话,我会这么做。不过,预览器不能作为预览器的功能是一个#Bug。
你会如何将其归类为一个功能——你会如何重写标题以证明这一点?
我认为预览和渲染帖子之间不一致是合理的,可以被视为一个#bug。
解决方案可能是也在预览中阻止它,这意味着“为帖子添加 \u003cbutton\u003e 支持”将是一个有效的#feature request,未来 ![]()
确实如此,@david。我本应该把它们分开:
抱歉,谢谢。