根据文档模式动态更改样式表

时间:2013-02-25 14:21:37

标签: stylesheet xpages

有没有办法动态更改样式表文件,具体取决于文档是处于编辑还是读取模式?

我想要做的是将以下代码添加到资源href属性的“计算值”选项中:

if(document.isEditable()){
   return "style_edit.css"
}
else{
   return "style_read.css"
}

我的主要问题是,当页面加载时,它会给出错误“找不到文档”。这可能是因为当页面加载时,只有一个包含文档的视图,当用户单击文档ID时,会出现带有绑定文档的自定义控件。我不知道如何在页面加载时使绑定到自定义控件文档。

编辑: 我尝试了一个try / catch块,现在xpage打开而不显示错误。但是虽然刷新了自定义控件,但css文件不会改变,但我会动态使用计算而不是在加载时计算

提前谢谢!

2 个答案:

答案 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

中的选择器