1

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

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

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

一旦我注入它,它就适用于整个应用程序。我该如何克服呢?

4

3 回答 3

7

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

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

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


// Remove the injected css element
e.removeFromParent();
于 2013-08-19T07:03:20.263 回答
2

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

以不同的方式组织您的“特殊” CSS 样式表要好得多:

转动选择器如

.some {
  color: green;
}

.other {
  color: red;
}

进入

.special .some {
  color: green;
}

.special .other {
  color: red;
}

然后添加/删除“特殊”类,例如到/从您的身体元素中激活/停用特殊样式。

于 2013-08-18T12:34:08.637 回答
0

如果您在超过 1 个页面中嵌入了相同的 GWT 应用程序,并且您想要基于给定页面的不同行为,例如,您可以调用

MyClass.INSTANCE.ensureInjected();

如果设置了引导参数。在主机页面中,设置参数,例如 YourGwtApp.nocahe.js?css=inject 并按照此处的说明阅读它 在 onLoadMethod 中,ensureInjected相应地调用引导参数。

于 2013-08-17T20:49:41.357 回答