有没有办法动态更改样式表文件,具体取决于文档是处于编辑还是读取模式?
我想要做的是将以下代码添加到资源href属性的“计算值”选项中:
if(document.isEditable()){
return "style_edit.css"
}
else{
return "style_read.css"
}
我的主要问题是,当页面加载时,它会给出错误“找不到文档”。这可能是因为当页面加载时,只有一个包含文档的视图,当用户单击文档ID时,会出现带有绑定文档的自定义控件。我不知道如何在页面加载时使绑定到自定义控件文档。
编辑: 我尝试了一个try / catch块,现在xpage打开而不显示错误。但是虽然刷新了自定义控件,但css文件不会改变,但我会动态使用计算而不是在加载时计算
提前谢谢!
答案 0 :(得分:2)
您可以将资源href
属性设置为已计算。为此,请转到XPage的所有属性“基础>资源> styleSheet ”。您可以在此处使用JavaScript代码计算href
属性。所以XPage源代码中的资源看起来像这样
<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>
要从自定义控件访问数据源,您可以使用全局变量currentDocument
而不是document
。
答案 1 :(得分:2)
为什么强制用户在版本上下载单独的文件时只需将计算出的styleClass添加到某些面板/组件:
<xp:panel>
<xp:this.styleClass><![CDATA[#{javascript:return document.isEditable()?"docEditMode":"docReadMode";}]]></xp:this.styleClass>
</xp:panel>
并将其用作style.css
中的选择器