如何在GWT中删除注入的CSS资源?

时间:2013-08-17 12:14:02

标签: gwt uibinder gwt2 clientbundle cssresource

我想在GWT应用程序中删除注入的CSSResource。

我使用了以下代码MyClass.INSTANCE.ensureInjected();

我只想要特定页面的上述CSSResource。所以剩下的页面应该按照实际的css / theme来工作。

一旦我注射了它,它适用于整个应用程序。我怎么能克服这个?

帮助我。

3 个答案:

答案 0 :(得分:6)

您可以直接使用StyleInjector实用程序类注入css包,而不是ensureInjected()方法

然后您将获得注入元素的引用,您可以在需要时将其删除。

// Equivalent to MyClass.INSTANCE.ensureInjected()
StyleElement e  = StyleInjector.injectStylesheet(MyClass.INSTANCE.css().getText());


// Remove the injected css element
e.removeFromParent();

答案 1 :(得分:2)

理论上你可以尝试从DOM中删除注入的样式块,但这将非常困难(并且可能不太可靠)。

以不同的方式组织“特殊”CSS样式表会更好:

选择

等选择器
.some {
  color: green;
}

.other {
  color: red;
}

.special .some {
  color: green;
}

.special .other {
  color: red;
}

然后添加/删除'特殊'类,例如来自/来自您的body元素以激活/停用特殊样式。

答案 2 :(得分:0)

如果您在多个页面中嵌入了相同的GWT应用程序,并且您希望基于给定页面执行不同的行为,则可以调用

MyClass.INSTANCE.ensureInjected();

如果设置了bootstrap参数。 在主机页面中,设置参数,如YourGwtApp.nocahe.js?css = inject,并按照说明here读取它 在onLoadMethod中,根据您的bootstrap参数调用ensureInjected