0

目前我有这段代码很好用 -

<CFIF (DailyCount MOD 2) EQ 0>
<CFSET via = '<td style="background-color: DBEFB6;">#src#<br><font   color="blue">#get_info.csuseragent#</font></td>'>
<CFELSE>
<CFSET via = '<td>#src#<br><font color="blue">#get_info.csuseragent#</font></td>'>
</CFIF>

#get_info.csuseragent#字段中,目前它正在显示整个 UA 字符串,例如 - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0

我想将代码放在#get_info.csuseragent#标签所在的位置,以便它只显示浏览器/设备。这通常在此设置之外工作,但我无法弄清楚如何让它显示在该单元格中。任何人都可以阐明如何让这些 CFIF 语句出现在这个 CFSET 中吗?

<CFIF '#get_info.csuseragent#' contains "blackberry">Blackberry</CFIF> 
<CFIF '#get_info.csuseragent#' contains "iphone">iPhone</CFIF>
<CFIF '#get_info.csuseragent#' contains "ipad">iPad</CFIF> 
<CFIF '#get_info.csuseragent#' contains "android">Android</CFIF>  
<CFIF '#get_info.csuseragent#' contains "msie">IE</CFIF>
<CFIF '#get_info.csuseragent#' contains "firefox">Firefox</CFIF>
<CFIF '#get_info.csuseragent#' contains "chrome">Chrome</CFIF>
<CFIF '#get_info.csuseragent#' contains "opera">Opera</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.53.10">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.57.2">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.21.1">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.19.4">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/533.18.5">Safari</CFIF>
<CFIF '#get_info.csuseragent#' contains "Safari/534.50">Safari</CFIF>
4

3 回答 3

3

升级到 CF 9+ 后,您可以使用三元运算符。我知道您不能将其与 CF8 一起使用,因此请考虑将其作为未来的提示。

ternary 最适合简单的 if-else 条件,在我看来非常优雅。语法是condition ? true : false

<cfset myVar = findNoCase('blackberry', agent) ? "Blackberry" : "unknown">

您也可以像这样进行嵌套,但如果遵循/维护变得复杂,您最好使用<cfscript>if(){}elseif(){}else{};</cfscript><cfif><cfelseif><cfelse></cfif>提高可读性,更不用说我从未测试过嵌套三元效率。就我个人而言,我觉得这很容易阅读,但每个人都有自己的...

<cfset myVar = findNoCase('blackberry', agent) ? "Blackberry" :
               findNoCase('iPhone', agent) ? "iPhone" :
               findNoCase('android', agent) ? "Android" :
               findNoCase('msie', agent) ? "Kill me now" :
               findNoCase('firefox', agent) ? "Firefox" :
               findNoCase('chrome', agent) ? "Chrome" :
               findNoCase('opera', agent) ? "Opera" :
               findNoCase('safari', agent)? "Safari" : "unknown">
于 2013-05-14T17:26:38.957 回答
2

您不能在彼此之间嵌入标签,因此这是无效的语法:

<cfset myVar = <cfif something>"fred"<cfelse>"barney"</cfif>>

在您的情况下,首先设置一个变量:

<cfif get_info.csuseragent contains "blackberry">
    <cfset agent = "Blackberry">
<cfelseif get_info.csuseragent contains "iphone">
    <cfset agent = "iPhone">
etc
<cfelse>
    <cfset agent = "Unknown">
</cfif>

然后使用它:

<cfset via = '<td style="background-color: DBEFB6;">#src#
<br><font color="blue">#agent#</font></td>'>
于 2013-05-14T15:21:47.453 回答
-1

使用cfsavecontent而不是cfset.

请参阅以下文档,展示如何执行此操作。 http://cfquickdocs.com/?getDoc=cfsavecontent

于 2013-05-14T15:58:12.617 回答