2013-02-25 9 views
0

문서가 편집 모드 또는 읽기 모드에 따라 스타일 시트 파일을 동적으로 변경하는 방법이 있습니까?문서 모드에 따라 스타일 시트를 동적으로 변경하십시오.

는 그 페이지가로드, 그것은 제공
if(document.isEditable()){ 
    return "style_edit.css" 
} 
else{ 
    return "style_read.css" 
} 

이 나의 가장 큰 문제입니다 : 내가하고 싶은 무엇

자원 HREF 속성의 "계산 값"옵션에 다음 코드를 추가하는 것입니다 오류 "문서를 찾을 수 없습니다". 이는 페이지가로드 될 때 문서를 포함하는보기 만 있고 사용자가 문서 ID를 클릭하면 바인드 된 문서가있는 사용자 정의 컨트롤이 나타나기 때문일 수 있습니다. 페이지를로드 할 때 사용자 지정 컨트롤 문서에 바인딩되도록 만드는 방법을 모르겠습니다.

편집 : try/catch 블록을 시도했는데 xpage가 오류를 표시하지 않고 열립니다. 그러나 사용자 지정 컨트롤이 새로 고쳐 지지만 CSS 파일은 변경되지 않고 동적으로 계산을 사용하고로드시 계산되지 않습니다.

감사합니다.

+1

당신은 사용해 볼 수 있습니다

<xp:panel> <xp:this.styleClass><![CDATA[#{javascript:return document.isEditable()?"docEditMode":"docReadMode";}]]></xp:this.styleClass> </xp:panel> 

하고있는 style.css 내부 선택기로 사용 xpages 테마에서 SSJS를 사용할 수 있고 조건에 따라 동적으로 CSS를로드 할 수 있습니다. – anix

+0

빠른 응답을 보내 주셔서 감사합니다. 그러나 지금은 어떤 테마도 사용하지 않고 있으며 이런 식으로 생각합니다. 더 많은 변화를 이끌 것입니다. – kmak

답변

2

href 속성을 계산 된 것으로 설정할 수 있습니다. 이 경우 XPage의 모든 속성 "기본> 리소스> styleSheet"로 이동하십시오. 여기에서 JavaScript 코드로 href 속성을 계산할 수 있습니다. 그래서 XPage 소스의 리소스는 대신 document의 전역 변수 currentDocument 사용할 수있는 사용자 정의 컨트롤에서 데이터 소스에 액세스하려면이

<xp:this.resources> 
    <xp:styleSheet> 
     <xp:this.href><![CDATA[#{javascript:if (document.isEditable()) { 
    return "style_edit.css"; 
} else { 
    return "style_read.css"; 
}}]]></xp:this.href> 
    </xp:styleSheet> 
</xp:this.resources> 

처럼 보일 것입니다.

+0

예, 이것은 무엇을 하려는지입니다. 그러나 페이지를로드 할 때 "currentDocument not found"오류가 발생합니다. 이는 페이지가로드 될 때 문서를 포함하는보기 만 있고 사용자가 문서 ID를 클릭하면 바인드 된 문서가있는 사용자 정의 컨트롤이 나타나기 때문일 수 있습니다. 페이지로드시 사용자 정의 컨트롤 문서에 바인드하는 방법을 모르겠습니다. – kmak

+0

@kmak : SSJS 코드를 try/catch 블록으로 둘러싸려고 했습니까? –

+0

@kmak : 질문을 명확히하고 편집 할 수 있습니까? 질문하고 싶습니다. 자원 href ...의 "계산 값"옵션에 다음 코드를 추가하는 것이 좋습니다. 당신? – Naveen

2

당신은 단순히 일부 패널/구성 요소에 계산 된 styleClass를 추가 할 때 강제로 사용자가 판에 별도의 파일을 다운로드하는 이유 :

+1

+1 문서 모드를 처리하기 위해 하나의 CSS에 적절한 선택자를 유지하는 것이 더 좋습니다. –

+1

예 이것이 제가 지금 성취하는 방법입니다. 당신은 아마 그것에 대해 옳을 것입니다. 다른 css 파일에 대해 생각하게 만든 것은 다른 프로그래머가 변경하려는 경우 모든 단일 패널 또는 구성 요소를 변경해야한다는 것입니다. 그러나 잘 이해하면 별도의 파일을 사용하는 것이 더 바람직하다고 말하고 있습니다. – kmak

관련 문제