Xpages 如何在XPage中动态设置HTML标记

Xpages 如何在XPage中动态设置HTML标记,xpages,Xpages,在我的标准网页中,我有以下代码,但如何在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]> <ht

在我的标准网页中,我有以下代码,但如何在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]-->

您可以通过此网页上的代码检查哪个bowser

if-then-else可以在计算文本中使用,即快速方式。在if语句中,返回正确的html。
您需要将计算文本设置为HTML

您可以通过此网页上的代码检查哪个bowser

if-then-else可以在计算文本中使用,即快速方式。在if语句中,返回正确的html。
您需要将计算文本设置为HTML

您可以通过向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>

必须返回空值,否则主题将失败。

您可以通过向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>

必须返回空值,否则主题将失败。

如果可以将类放在标记中,则可以通过主题集中执行,因此无需在每个页面上重复代码:

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

如果您可以将类放在标记中,那么您可以通过主题集中执行,这样就不需要在每个页面上重复代码:

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

示例HTML代码是关于设置toplevel标记的,我不认为您可以使用computed text.thimop来实现这一点,我同意。我读得不太好。这是一个比普通标记更高的级别。示例HTML代码是关于设置toplevel标记的,我不认为你可以用computed text.thimop来实现这一点,我同意。我读得不太好。这是一个比普通标签更高的级别。非常聪明。我试图用一个主题来实现这一点,但只能将类放入标记中,并将主题版本添加到我的答案中。在这个特殊的情况下,级联?:操作员将执行此操作。非常聪明。我试图用一个主题来实现这一点,但只能将类放入标记中,并将主题版本添加到我的答案中。在这种特殊情况下,级联?:运算符将完成此操作。