在 Discourse 中嵌入 Runkit 小部件

嘿!我正在运行一个托管在 Discourse 上的实例(商业版,非企业版),想在帖子中嵌入一个 Runkit 小部件。你知道这是否可行吗?谢谢!

从技术上讲,通过一个用于装饰帖子的主题组件可以实现这一功能。您可以为嵌入内容定义一个 [wrap] 区块,并在帖子装饰加载时引入相关库,然后执行嵌入操作。

不过,我强烈建议您在此方面保持谨慎:

  1. 您不希望使内容安全策略(CSP)失效,因此需要对此进行充分考虑。
  2. 您不希望因加载大型动态 JavaScript 资源包而导致 Discourse 运行变慢。
  3. 允许 Runkit 在您的 Discourse 实例上运行 JavaScript,意味着您对其投入了极大的信任。

我估计开发此类功能大约需要 1 到 2 个工作日。如果您有预算,或许可以在 Marketplace 频道中发起一个话题?主题组件在我们的企业版套餐环境中可以正常安装使用。

得益于 oEmbed 标准,您只需将 https://runkit.com/ 添加到设置中的 allowed iframes 即可轻松搞定。

只需将 Runkit 链接单独放在一行,Discourse 便会自动将其转换为嵌入内容:

https://runkit.com/falco/5e13a3b7f5d2e2001a5741d2

将变为

https://runkit.com/falco/5e13a3b7f5d2e2001a5741d2

不过,当嵌入内容过长时,显示效果会变得不太理想,因此确实可能需要一个主题组件来优化嵌入内容的样式并支持滚动。

非常感谢大家的回复!@sam Runkit 是在其服务器端运行代码,而非客户端,因此相当安全(加载小部件本身可能会稍微拖慢加载速度,但仅此而已)。

@Falco 我完全忽略了“允许的 iframe