在GWT RichTextArea头部插入css样式表

在GWT RichTextArea头部插入css样式表,gwt,stylesheet,Gwt,Stylesheet,是否可以将样式表注入GWT RichTextArea的头部 似乎我在正文中放置了一个样式元素,某些浏览器(如IE7)允许用户删除节点。是的。但是您需要一个类似于操作dom的库,或者编写一些jsni代码 我更喜欢gquery,因为它简单,而且可以与所有浏览器一起使用 import static com.google.gwt.query.client.GQuery.*; //首先将小部件附加到DOM RootPanel.get().add(richTextArea); //我们只能在创建ifra

是否可以将样式表注入GWT RichTextArea的头部


似乎我在正文中放置了一个样式元素,某些浏览器(如IE7)允许用户删除节点。

是的。但是您需要一个类似于操作dom的库,或者编写一些jsni代码

  • 我更喜欢gquery,因为它简单,而且可以与所有浏览器一起使用
import static com.google.gwt.query.client.GQuery.*;
//首先将小部件附加到DOM
RootPanel.get().add(richTextArea);
//我们只能在创建iframe文档后操纵头部,
//这是在它被连接之后发生的。
//因为richtTextArea使用超时来初始化,所以我们需要一个延迟。
$(richTextArea)。延迟(1,
懒惰的
.contents()
.find(“head”)
.append(“正文{背景:红色}”)
.done());
  • 使用GWT+JSNI,您必须执行以下操作(但并非在所有浏览器中都测试):
//首先将小部件附加到DOM
RootPanel.get().add(richTextArea);
//我们只能在创建iframe文档后操纵头部,
//这是在它被连接之后发生的。
//使用计时器,因为richtTextArea使用超时进行初始化。
Timer insertCss=新计时器(){
私有本机元素getHeadElement(元素iframe)/*-{
返回iframe.contentWindow.document.head;
}-*/;
公开募捐{
元素头=getHeadElement(richTextArea.getElement());
元素样式=DOM.createElement(“样式”);
setInnerText(“主体{背景:黄色}”);
头。附属物(样式);
}
};
//定时
插入附表(1);

如果您不想使用CSS文件,可以直接插入CSS。据我所知,它被放在了头上,但是对于整个文档。

我也有同样的问题,下面是添加到类构造函数中的解决方案:

richTextArea.addInitializeHandler(new InitializeHandler() {
        public void onInitialize(InitializeEvent ie) {
            document = IFrameElement.as(richTextArea.getElement()).getContentDocument(); 

            StyleElement se = document.createStyleElement();
            se.setType("text/css");
            se.setInnerHTML("some CSS"); 

            BodyElement body = document.getBody();
            body.getParentNode().getChild(0).appendChild(se);
        } 
  });

为什么不使用一个单独的CSS文件来设计样式呢?这似乎是一种非常有力的方法,因为用于样式设置的seOperate文件不起作用,因为它位于iframe中