Я хотел бы скрыть определенные элементы управления, когда xpage встроен в iframe. Как я могу это сделать?
Основываясь на некоторых рекомендациях на этом сайте, я попробовал:
На стороне клиента JavaScript у меня есть:
<xp:eventHandler event="onClientLoad" submit="false">
<xp:this.script><![CDATA[if (window.frameElement) {
//in iframe
var field = document.getElementById("#{id:NavBarOption}");
alert(field.id)
field.value = "hide";
}
else {
//NOT in iframe
var field = document.getElementById("#{id:NavBarOption}");
alert(field.id)
field.value = "";
}]]></xp:this.script>
</xp:eventHandler>
Это должно установить элемент управления полем ввода, который имеет частичное обновление в событии onchange для:
<xp:inputText id="NavBarOption"
value="${javascript:viewScope.NavBarOption}">
<xp:this.attrs>
<xp:attr name="type" value="hidden"></xp:attr>
</xp:this.attrs>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="body" immediate="true"
execMode="partial" execId="body">
</xp:eventHandler>
</xp:inputText>
Элемент управления полем ввода привязан к переменной области видимости. Эта область Variabel будет использоваться в элементах управления или пользовательском элементе управления для отображаемого свойства, например:
<xc:ccNavBar id="ccNavBar">
<xc:this.rendered><![CDATA[#{javascript:return true;
var hide = viewScope.showNavBar;
if (hide !=""){
//return false;
}
else{
//return true;
}}]]></xc:this.rendered>
</xc:ccNavBar>
Что я делаю неправильно?