我使用sanitize gem来清理输入。
现在我需要允许添加样式到span。实际上我只想允许特定的样式(font-style
,font-weight
和text-decoration
),但目前我甚至无法设法允许样式属性。
我使用以下配置:
class Sanitize
module Config
ANSWER = freeze_config(
:elements => RESTRICTED[:elements] + %w[
iframe img a br code li ol ul p pre small strike sub sup span style
],
:attributes => {
'a' => %w[href],
'img' => %w[src],
'iframe' => %w[allowfullscreen frameborder height src width],
'span' => %w[style],
'style' => %w[font-style font-weight text-decoration],
},
:add_attributes => {
'a' => {'rel' => 'nofollow', 'target' => '_blank'},
'iframe' => {'frameborder' => '0'},
},
:protocols => {
'a' => {'href' => ['http', 'https', 'mailto', :relative]},
'img' => {'src' => ['http', 'https']},
'iframe' => {'src' => ['http', 'https', :relative]}
},
:at_rules_with_styles => %w[
font-style font-weight text-decoration
],
)
end
end
但是当我尝试这个时:
sanitize_settings = Sanitize::Config::ANSWER
Sanitize.fragment('<span style="color:red">rr</span>', sanitize_settings)
我明白了:
=> "<span>rr</span>"
有什么想法吗?
答案 0 :(得分:1)
下面的代码应该基于最新版本。
jsdom
Sanitize :: Config :: RELAXED [:css] [:properties]包含所有样式属性。如果只想要允许颜色属性,请指定:
Sanitize.fragment('<span style="color:red">rr</span>',
:elements => %w[div span],
:atributes => {:all => ['style'],
:css => {properties: Sanitize::Config::RELAXED[:css][:properties]}
)
答案 1 :(得分:0)
我不使用sanitize gem
,但我认为问题在于attributes
内部style
没有正确的值。
试试这个:
'style' => %w[font-style font-weight text-decoration color]
答案 2 :(得分:0)
我无法修复清理过滤器,我所做的就是使用html标签(<b>
,<i>
,<u>
)。
对于那些使用summernote html编辑器遇到此问题的人,解决方法是将编辑器设置为:
$('.summernote').summernote({
:
:
styleWithSpan: false
});