<iframe>
<html>
<body>
</body>
</html>
</iframe>
我发现iframe的设置样式名称不起作用,必须设置为body元素。 我尝试这样做(在构造函数中):
Element body = ((FrameElement) getElement().cast()).getContentDocument().getBody();
body.setClassName("richTextArea");
在这个boy元素上抛出了NullPointerException,甚至我将它们包装成这样:
Scheduler.get().scheduleDeferred(new ScheduledCommand()
{
@Override
public void execute()
{
Element body = ((FrameElement) getElement().cast()).getContentDocument().getBody();
body.setClassName("richTextArea");
}
});
实际问题是RichTextBox在附加到它时变得奇怪 DOM,它的内部东西(html,body)没有生成,即使我将这些行包装成 onload()方法,NPE有时被抛出,但如果将它们包装到计时器中,则进行计划 相对较长的等待时间,没有NPE,但是你知道,我不能让某事取决于此 不可预测的“相对漫长的等待时间”。
任何人都可以提供解决方案吗?
答案 0 :(得分:0)
您无法将主页面中定义的CSS规则应用于RichTextArea的内容。 您必须在RichTextArea创建的iframe中包含该样式。
以下是内联样式的简单示例:
RichTextArea richTextArea = new RichTextArea();
richTextArea.setSize("200px", "200px");
richTextArea.setHTML("<html><head><style type=\"text/css\">h1 {color: red}</style></head><body><h1>Title</h1><p>content...</p></body></html>");
RootPanel.get().add(richTextArea);
您还可以使用外部css文件。必须相应地调整设置为richTextEditor的html代码。