0

ドキュメントが編集モードか読み取りモードかに応じてスタイルシートファイルを動的に変更する方法はありますか?

私がやりたいのは、リソースhrefプロパティの「computevalue」オプションに次のコードを追加することです。

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

これに関する私の主な問題は、ページが読み込まれるときに「ドキュメントが見つかりません」というエラーが表示されることです。これは、ページが読み込まれると、ドキュメントを含むビューのみが存在し、ユーザーがドキュメントIDをクリックすると、バインドされたドキュメントを含むカスタムコントロールが表示されるためと考えられます。ページの読み込み時にバインドされたカスタムコントロールドキュメントを利用できるようにする方法がわかりません。

編集:try / catchブロックを試しましたが、エラーを表示せずにxpageが開きます。しかし、カスタムコントロールは更新されますが、cssファイルは変更されません。ただし、私は動的に計算を使用し、ロード時に計算しません。

前もって感謝します!

4

2 に答える 2

2

リソースhref属性を計算済みとして設定できます。これを行うには、XPage のすべてのプロパティ " basics > resources > styleSheet " に移動します。hrefここで、JavaScript コードを使用して属性を計算できます。したがって、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

計算されたスタイルクラスをいくつかのパネル/コンポーネントに追加するだけでよいのに、ユーザーがエディションで個別のファイルをダウンロードすることを強制する理由:

<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 に答える