GWT внедряет CSS во время выполнения

Я использую gwt 2.3.0 в своем проекте. Мне нужно изменить источник css:

<link type="text/css" rel="stylesheet" href="gxt/css/gxt-all.css">

во время выполнения (я хочу решить, какой файл использовать в методе onModuleLoad). что лучше всего сделать?


person Adi Mor    schedule 05.02.2012    source источник


Ответы (3)


Чтобы внедрить файл CSS, вам нужно действовать так же, как ScriptInjector для файла javascript:

/** Load CSS file from url */
public static void loadCss(String url){
    LinkElement link = Document.get().createLinkElement();
    link.setRel("stylesheet");
    link.setHref(url);
    nativeAttachToHead(link);
}

/**
 * Attach element to head
 */
protected static native void nativeAttachToHead(JavaScriptObject scriptElement) /*-{
    $doc.getElementsByTagName("head")[0].appendChild(scriptElement);
}-*/;

@jusio:

StyleInjector.inject(...) работает только с содержимым CSS:

StyleInjector.inject(".myClass{color:red;}");
person JBE    schedule 20.11.2012
comment
Похоже, я дважды потерпел неудачу с этим вопросом (сначала дал неправильное решение, второй - забыл его исправить). Спасибо за публикацию правильного решения. - person jusio; 14.03.2013

Использование Elemental 2 на GWT 2.8.2 или J2CL:

 public static void loadCss(String url){
        HTMLDocument document = DomGlobal.document;

        Element link = document.createElement("link");
        link.setAttribute("rel", "stylesheet");
        link.setAttribute("type", "text/css");
        link.setAttribute("href", url);

        document.getElementsByTagName("head").getAt(0).appendChild(link);
    }
person Eduardo Guardiola    schedule 21.03.2019

Используйте этот метод JSNI и вызовите эту форму метода onModuleLoad() GWT, указав URL-адрес (путь вашего css) в качестве аргумента на основе вашего требования.

public static native void loadCss(String url)/*-{
    var fileref=document.createElement("link");
    fileref.setAttribute("rel","stylesheet");
    fileref.setAttribute("type","text/css");
    fileref.setAttribute("href",url);
    $doc.getElementsByTagName("head")[0].appendChild(fileref);
}-*/;
person Manish Prajapati    schedule 11.10.2013