簡體   English   中英

如何刪除 GWT 中注入的 CSS 資源?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM