首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重写Trix HTMLSanitizer以允许使用类的跨度标记

如何重写Trix HTMLSanitizer以允许使用类的跨度标记
EN

Stack Overflow用户
提问于 2019-10-23 08:52:35
回答 1查看 650关注 0票数 3

我需要允许在trix编辑器中使用类的span标签。

我可以通过以下方式添加span标记:

代码语言:javascript
复制
 Trix.config.textAttributes.span = {
        tagName: "span",
        inheritable: true
 };

但是我不能在span上获取类,我想它仍然被Trix.HTMLSanitizer剥离了。

我还试着用

代码语言:javascript
复制
 Trix.config.textAttributes.span = {
        tagName: "span",
        inheritable: true,
        parser: false
 };

//and


 Trix.config.textAttributes.span = {
        tagName: "span",
        inheritable: true,
        parser: (element) => {
         element.allowedAttributes = 'class';
        }
 };

我不知道如何重写Trix.HTMLSanitizer以允许像<span class="my-class">value</span>这样的东西在编辑器中以样式显示。

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 00:02:17

我也有同样的需求,并最终使用hack解决了这个问题:我在CSS中重新设置了.trix-content del元素的样式。但是,只有当您只需要一个自定义样式时,这才能起作用。(我可以这样做,因为我不需要删除线格式,所以我可以(Ab)使用那个标记。)

为了更好,每当我需要在Trix编辑器之外的任何地方显示文本时,我都会在内容中用适当的span class="xxx"替换del标记。也就是说,我在内部使用del来标记、存储和编辑/更新内容,并将其替换为适当的span,以便在编辑器外部显示给用户。

在创建富文本内容时,要将其标记为突出显示:

代码语言:javascript
复制
def create
  ...
  object_params[:content].gsub!(/foo/i, '<del>\0</del>')
  ...
end

然后,当加载它以便在编辑器外部显示时:

代码语言:javascript
复制
@new_content = @object.content.to_s.gsub(/<del>/i, '<span class="highlight">').gsub(/<\/del>/i, '</span>').html_safe

和SCSS:

代码语言:javascript
复制
// Trix-editor

.trix-content {
  del {
    background-color: $yellow;
    text-decoration: none;
  }
}

.highlight {
  background-color: $yellow;
}

这可能无法满足您的需求,而且在任何情况下都有点糟糕。如果Trix能支持任意的span标签,那就太好了!

(仅供参考,我需要扫描文本文件并为用户突出显示某些单词。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58514027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档