【发布时间】:2017-11-20 09:24:52
【问题描述】:
例如,我在Label 中设置了以下 html 代码:
Label label = new Label();
label.setContentMode(ContentMode.HTML);
label.setValue("<style> * { font-size: 12px; font-family: Arial; } </style> hello world");
上述代码的问题在于它将整个页面设置为 Arial 而不仅仅是 Label。如果我使用RichTextArea,那么它只会将样式设置为该组件,但无论出于何种原因,Label 中定义的任何 CSS 样式都会应用于整个页面...
仅供参考 - 如果您将 RichTextArea 设置为只读,您会遇到完全相同的问题...
【问题讨论】:
-
您必须使用正确的 css 选择器。在你的 css 中使用 * 将该样式应用于所有 html 标签 -> 整个页面。无论如何,在 html 模式下使用标签然后在其中使用 html 和 css 是一个奇怪的想法。有不同的方法可以为特定标签设置内容和 css
-
这是一个用户生成的报告。基本上,我不想将它放到 RichTextArea (可以做到这一点)上,而是想通过管道让它看起来好像是页面的一部分。这一切都是使用模板自包含的,因为 html sn-p 以后可以转换为 PDF 文件等。
-
如果您使用这样的内联样式,它是否有效:
<span style="font-size: 12px; font-family: Arial;">? -
是的,
style会起作用。我希望 OP 知道这是一个黑客攻击,现在他们有责任在该标签中防止 XSS。 -
这就是为什么我想让它像 RichTextArea 组件一样完全独立。这就是为什么我什至用 setReadOnly(true) 尝试了 RichTextArea 但这导致了基本上相同的时间。如果它不是只读的,那么组件中似乎包含任何 CSS