0

有没有办法根据文档是处于编辑模式还是读取模式来动态更改样式表文件?

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

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

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

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

先感谢您!

4

2 回答 2

2

您可以将资源href属性设置为计算。为此,请转到 XPage 的所有属性“基础 > 资源 > 样式表”。在这里,您可以使用 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.

于 2013-02-25T14:37:08.937 回答
2

当您可以简单地将计算的 styleClass 添加到某个面板/组件时,为什么要强制用户在版本上下载单独的文件:

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

并将其用作 style.css 中的选择器

于 2013-02-25T15:32:38.113 回答