2013-08-17 5 views
0

GWT 응용 프로그램에서 삽입 된 CSSResource를 제거하고 싶습니다. GWT에서 삽입 된 CSS 리소스를 제거하려면 어떻게해야합니까?

나는 나는 단지 특정 페이지에 대한 위의 CSSResource을 원하는 다음 코드 MyClass.INSTANCE.ensureInjected();

을 사용했다. 나머지 페이지는 실제 CSS/테마별로 작동해야합니다.

한번 주입하면 전체 애플리케이션에 적용됩니다. 어떻게 이것을 극복 할 수 있습니까?

도와주세요. 당신이 1 개 이상의 페이지에서 동일한 GWT 응용 프로그램을 포함하고 당신이 주어진 페이지를 기반으로 다른 동작을 원하는 경우 부트 스트랩 매개 변수가 설정되어있는 경우

답변

6

당신은 그럼 당신은 당신이 원하는 때 제거 할 수 있습니다 주입 된 요소의 참조가됩니다 대신 ensureInjected() 방법

의 직접 StyleInjector 유틸리티 클래스를 사용하여 CSS를 번들을 주입 할 수 있습니다.

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


// Remove the injected css element 
e.removeFromParent(); 
+1

+1, 나는 이것에 대해 몰랐다. –

0

, 당신은 예를 들어

MyClass.INSTANCE.ensureInjected(); 

를 호출 할 수 있습니다. 호스트 페이지에서 YourGwtApp.nocahe.js? css = inject와 같은 매개 변수를 설정하고 설명한대로 읽습니다. here onLoadMethod에서 부트 스트랩 매개 변수에 따라 ensureInjected을 호출하십시오.

+0

AJAX (또는 GWT) 앱에서는 삽입 된 CSS가 페이지에 그대로 유지되도록 일반적으로 다른 페이지 (실제로 DOM을 다시 작성)를로드하지 않습니다. –

+0

@ChrisLercher GWT.runAsynch 블록에 포장하지 않으면 (this = MyClass.INSTANCE.ensureInjected()) –

+0

runAsync 블록은 나중에 해당 블록의 자바 스크립트 코드를로드 할 수 있다는 것을 의미합니다. 그러나 일단 코드가 실행되면 주입 된 스타일 요소는 명시 적으로 제거 할 때까지 DOM에 남아 있습니다 (예 : @ Manolo의 답변 참조). –

2

이론적으로 주입 된 스타일 블록을 DOM에서 제거하려고 시도 할 수는 있지만 매우 어려울 수 있습니다.

다른 방법으로 '특별한'CSS 스타일 시트를 구성하는 것이 훨씬 더 나은

: 다음

.special .some { 
    color: green; 
} 

.special .other { 
    color: red; 
} 

과에

.some { 
    color: green; 
} 

.other { 
    color: red; 
} 

같은

전원을 켜고 선택기 추가 /를 '특수를 제거 'class eg 특수 스타일을 활성화/비활성화하기 위해 본문 요소에서 /로 이동합니다.

+0

나는이 솔루션을 좋아한다. 스킨을 아주 깨끗하고 쉽게 만들 수있다. –