目前我的代码工作得很好 -
<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#标记的下方,以便只显示broswer / device。这通常是在这个设置之外,但我无法弄清楚如何让它在该单元格中显示。任何人都可以了解如何让这些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>
答案 0 :(得分:3)
升级到CF 9+后,您可以使用三元运算符。我知道你不能在CF8中使用它,所以请考虑这是未来的一个提示。
三元最适用于简单的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">
或{{1}}来提高可读性,更不用说我从未测试过嵌套的三元效率。就个人而言,我觉得这很容易阅读,但对于他/她自己......
{{1}}
答案 1 :(得分: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>'>
答案 2 :(得分:-1)
使用cfsavecontent
代替cfset
。
请参阅以下文档,了解如何执行此操作。 http://cfquickdocs.com/?getDoc=cfsavecontent