[英]How to remove the injected CSS Resource in GWT?
我想刪除 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;
}
然后添加/刪除“特殊”類,例如從您的 body 元素添加/刪除,以激活/停用特殊樣式。
如果您在 1 個以上的頁面中嵌入了相同的 GWT 應用程序,並且您想要基於給定頁面的不同行為,則可以例如調用
MyClass.INSTANCE.ensureInjected();
如果設置了引導參數。 在主機頁面中,設置參數,例如 YourGwtApp.nocahe.js?css=inject 並按照此處的說明閱讀它 在 onLoadMethod 中,根據您的引導程序參數調用ensureInjected
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.