Как я могу удалить внедренный ресурс CSS в GWT?
Я хочу удалить введенный CSSResource в приложении GWT.
Я использовал следующий код MyClass.INSTANCE.ensureInjected();
Я хочу выше CSSResource только для конкретной страницы. Таким образом, остальные страницы должны работать в соответствии с фактической css/theme.
Как только я ввожу это, оно применимо ко всему приложению. Как я могу преодолеть это?
Помоги мне.
3 ответа
Вы можете ввести свой CSS-пакет, используя напрямую StyleInjector
служебный класс, а не ensureInjected()
метод
Тогда у вас будет ссылка на внедренный элемент, который вы можете удалить, когда захотите.
// 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, чтобы активировать / деактивировать специальные стили.
Если вы встраивали одно и то же приложение GWT в более чем 1 страницу и хотите, чтобы в зависимости от данной страницы было другое поведение, вы можете, например, вызвать
MyClass.INSTANCE.ensureInjected();
если задан параметр начальной загрузки. На странице хоста установите этот параметр, например, YourGwtApp.nocahe.js? Css=inject, и прочитайте его, как описано здесь. В onLoadMethod вызовите ensureInjected
в соответствии с вашим параметром начальной загрузки.