我想在GWT应用程序中删除注入的CSSResource。
我使用了以下代码MyClass.INSTANCE.ensureInjected();
我只想要特定页面的上述CSSResource。所以剩下的页面应该按照实际的css / theme来工作。
一旦我注射了它,它适用于整个应用程序。我怎么能克服这个?
帮助我。
答案 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
。