1

標準の Web ページには次のコードがありますが、XPage でこれを行うにはどうすればよいですか?

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
4

3 に答える 3

6

これを行うには、UIViewRoot コンポーネントに属性を追加します。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

   <xp:this.attrs>

      <!-- if browser is IE 7 or smaller -->
      <xp:attr name="class" value="no-js lt-ie9 lt-ie8 lt-ie7"
         rendered="#{javascript:context.getUserAgent().isIE(0,7)}">
      </xp:attr>

      <!-- if browser is NOT IE 7 or smaller -->
      <xp:attr name="class" value="no-js lt-ie9 lt-ie8 lt-ie7"
         rendered="#{javascript:!(context.getUserAgent().isIE(0,7))}">
      </xp:attr>

   </xp:this.attrs>

</xp:view>

lang属性は、XPage の現在の言語設定によって計算されます。このアプリケーション/サーバー全体を実行するには、これをテーマに追加する必要があります。

編集:

テーマは次のようにする必要があります。

<control>
   <name>ViewRoot</name>
      <property>
         <name>attrs</name>
            <complex type="xp_attr">
               <property>
                  <name>name</name>
                  <value>class</value>
               </property>
               <property>
                  <name>value</name>
                  <value>#{javascript:
                     if (context.getUserAgent().isIE(0,6)) {
                        return 'no-js lt-ie9 lt-ie8 lt-ie7';
                     }
                     if (context.getUserAgent().isIE(7,7)) {
                        return 'no-js lt-ie9 lt-ie8';
                     }
                     if (context.getUserAgent().isIE(8,8)) {
                        return 'no-js lt-ie9';
                     }
                     return '';
                    }</value>
            </property>
         </complex>
      </property>
</control>

空のリターンが必要です。そうしないと、テーマは失敗します。

于 2012-11-16T10:46:09.480 に答える
2

クラスを <body> タグに配置することができれば、テーマを介して一元的に行うことができるため、すべてのページでコードを繰り返す必要はありません。

    <control>
        <name>ViewRoot</name>
        <property>
            <name>styleClass</name>
            <value>#{javascript:if (context.getUserAgent().isIE(0,6)) {
    return 'no-js lt-ie9 lt-ie8 lt-ie7';
} else if (context.getUserAgent().isIE(7,7)) {
    return 'no-js lt-ie9 lt-ie8';
} else if (context.getUserAgent().isIE(8,8)) {
    return 'no-js lt-ie9';
}}</value>
        </property>
    </control>
于 2012-11-16T11:04:05.583 に答える
0

このWebページhttp://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Browser_compatibilityのコードを使用して、どのバウザーを確認できます。

もしそうなら、あなたは計算されたテキストで使うことができます、速い方法。そして、ifステートメントで正しいhtmlを返します。計算されたテキストをHTMLに設定する必要があります

于 2012-11-16T10:28:22.860 に答える