我想删除 GWT 应用程序中注入的 CSSResource。
我使用了以下代码MyClass.INSTANCE.ensureInjected();
我只想要特定页面的上述 CSSResource。所以剩下的页面应该按照实际的 css/主题工作。
一旦我注入它,它就适用于整个应用程序。我该如何克服呢?
我想删除 GWT 应用程序中注入的 CSSResource。
我使用了以下代码MyClass.INSTANCE.ensureInjected();
我只想要特定页面的上述 CSSResource。所以剩下的页面应该按照实际的 css/主题工作。
一旦我注入它,它就适用于整个应用程序。我该如何克服呢?
StyleInjector
您可以直接使用实用程序类而不是ensureInjected()
方法注入您的 css 包
然后,您将获得注入元素的引用,您可以在需要时将其删除。
// Equivalent to MyClass.INSTANCE.ensureInjected()
StyleElement e = StyleInjector.injectStylesheet(MyClass.INSTANCE.css().getText());
// Remove the injected css element
e.removeFromParent();
从理论上讲,您可以尝试从 DOM 中删除注入的样式块,但这会非常困难(并且可能不太可靠)。
以不同的方式组织您的“特殊” CSS 样式表要好得多:
转动选择器如
.some {
color: green;
}
.other {
color: red;
}
进入
.special .some {
color: green;
}
.special .other {
color: red;
}
然后添加/删除“特殊”类,例如到/从您的身体元素中激活/停用特殊样式。
如果您在超过 1 个页面中嵌入了相同的 GWT 应用程序,并且您想要基于给定页面的不同行为,例如,您可以调用
MyClass.INSTANCE.ensureInjected();
如果设置了引导参数。在主机页面中,设置参数,例如 YourGwtApp.nocahe.js?css=inject 并按照此处的说明阅读它
在 onLoadMethod 中,ensureInjected
相应地调用引导参数。