문제
개찰구 기반 웹 응용 프로그램을 작업하고 있습니다. 응용 프로그램에는 모든 사용자가 사용할 권한이없는 버튼이 있습니다. 이 버튼은 실제로 간단한 링크입니다
<a wicket:id="publishButton" title="Publish" class="rightPanel_publish"><wicket:message key="publish"/></a>
시각적 외관을 설정하는 CSS 클래스 (외부 CSS 파일)와 함께
a.rightPanel_publish {
display: block;
width: 90px;
height: 27px;
background: url( ../imgs/right_panel_icon03.gif ) left top repeat-y;
text-decoration: none;
color: black;
padding: 12px 0px 0px 35px;
}
사용자가 버튼을 사용하도록 권한이없는 경우 링크가 비활성화되어 (Java) CSS는 더 이상 사용되지 않습니다.
내 질문 이것은 런타임에 링크가 비활성화되어 CSS 클래스를 변경한다는 것을 식별 할 수있는 방법이 있습니까? 차라리 JavaScript (지금까지 전체 프로젝트를 무료로 유지하기 위해 관리)를 사용하지 않고 모든 브라우저에서 작동하는 것을 선호합니다.
무리 감사,
유발 = 8-)
해결책
불행히도 나는 JS없이 버튼의 페이지를 변경하는 방법을 모른다. 페이지가로드되는 동안 CSS, Java 및 기타 모든 것이 실행됩니다. 페이지가 페이지와 상호 작용하는 유일한 방법은 JS를 통해입니다.
그러나 다음은 모든 브라우저 (예 : 6+, Safari, Opera, FF 등)에서 작동하는 JS입니다.
if(document.getElementById('foo'))
{
document.getElementById('foo').className='bar';
}
다른 팁
어떤 종류의 스크립팅 없이는 이것을 할 수있는 방법이 없습니다. "dhtml"의 "d"는 "javaScript"를 나타냅니다.
편집 : 실제로, 당신이 말한 이후 무엇 링크/버튼을 비활성화하고 있으며, 무언가가 동일한 요소에 "비활성화 된"클래스 (CSS를 알아 차리는 유일한 X- 브라우저 방법)를 추가 할 수 있습니다. 런타임 스위칭이 시작되지 않습니다. 상태가 변경되면 상태가 변경되면 철저히해야합니다.
개찰구 링크는 u003Ca>태그를 u003Cspan>비활성화 된시기로 바꿉니다.u003C/span>u003C/a>
CSS를 적용 할 때 명심하십시오.
.rightPanel_publish_button {
display: block;
width: 90px;
height: 27px;
background: url( ../imgs/right_panel_icon03.gif ) left top repeat-y;
text-decoration: none;
color: black;
padding: 12px 0px 0px 35px;
}
사용자 인증 상태를 기반으로 버튼의 모양 (예 : CSS 클래스)을 AtributeModifier로 변경할 수도 있습니다.
myButton.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
private static final long serialVersionUID= 1L;
@Override
public String getObject () {
if (!isAuthorized()) {
return "rightPanel_unauthorized";
}
return "rightPanel_publishbutton";
}
}));
CSS에서는 필요에 따라 ".rightpanel_unauthorized"스타일을 정의합니다.
나는 그것을 사용한다 *.setVisible(Boolean boolean)
개찰구에서 WebMarkupContainer 모델에 사용할 수 있습니다. setVisible ()은 사용자 역할을 기반으로 클래스의 다른 곳에 할당 할 수 있습니다. 그래서 당신은 그것을 찾아야 할 수도 있습니다 ...