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 文字列全体が表示されています。

以下のコードを#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 で使用できないことはわかっているので、これは今後のヒントと考えてください。

三項は、単純な if-else 条件に最適であり、私の意見では非常にエレガントです。構文は次のとおりです。condition ? true : false

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

このようにネストすることもできますが、従う/維持するのが複雑になる場合は<cfscript>if(){}elseif(){}else{};</cfscript><cfif><cfelseif><cfelse></cfif>ネストされた 3 項の効率をテストしたことがないことは言うまでもありません。個人的には読みやすいと思いますが、人それぞれ…

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