新しい CF11 モバイル機能は非常に複雑なレビューで受け取られていることを認識していますが、本当に単純なデバイス検出に使用できるかどうかを試してみたかったのですが、実際に機能するものは何も得られません.
たとえば、cfclientsettingsのドキュメント、特に「デバイス検出」見出しの下のページの最初の例を見ています。参照用のコードは次のとおりです (ここでは読みやすいように少し書式設定しています)。
<cfClientSettings detectDevice=true />
<cfclient>
<cffunction access="public" name="showCanvasSupport" returntype="void">
<cfset evalStr = "document.getElementById('canvas').innerHTML='" & cfclient.canvas & "'">
</cffunction>
</cfclient>
Canvas support -<b id="canvas"></b><br>
<button onclick="invokeCFClientFunction('showCanvasSupport',null)">Show canvas support</button>
新しい .cfm ページを作成し、このコードを追加すると、ページにテキストとボタンが生成されますが、ボタンをクリックすると Chrome で JS エラーがスローされます。 ]、successCallback、failureCallback。functionName、successCallback、failureCallback は必須です。successCallback または failureCallback がない場合は、null を値として渡すことができます。"
わかりました、良くありません。そこで、さらにいくつかのドキュメントを確認し、欠落しているコールバックを修正するために、invokeCFClientFunction() 呼び出しに別の null 引数を追加することにしました。これにより、少なくとも JS エラーは修正されますが、ボタンをクリックしても何も起こりません。
そのため、さらに大騒ぎした後、次のコードにたどり着きました。これはまだ機能しませんが、より近いようです。
<cfClientSettings detectDevice=true />
<cfclient>
<cffunction access="public" name="showCanvasSupport" returntype="void">
<cfscript>
document.getElementById('canvas').innerHTML=cfclient.canvas;
</cfscript>
</cffunction>
</cfclient>
Canvas support -<b id="canvas"></b><br>
<button onclick="invokeCFClientFunction('showCanvasSupport',null,null)">Show canvas support</button>
したがって、このコードは、ボタンをクリックすると、canvas 要素の innerHTML を「未定義」に設定します。素晴らしい。
正直なところ、私は cfclient を使用するために見つけることができるすべての例を試してきましたが、どれも機能しません。私が見逃している秘密はありますか?CFBuilder で「モバイル プロジェクト」を作成していない場合、この機能は機能しないのではないかという疑念をこっそり持っています。もしそうなら、それはばかげており、実際にはドキュメントでそれを述べていません。
最後に、私がやろうとしているのは、基本的なデバイス検出に cfclient を使用し、ブラウザ/デバイスの幅を取得して、「メディアクエリの使用」セクションと非常によく似た基本的なメディアクエリスタイルの検出を行うことです。cfclientsettingsドキュメントの 幅を取得して、それに基づいてセッション変数を設定したいだけです。
IIS を使用してセットアップした Win7 マシンで、CF11 の完全にパッチが適用された開発者バージョンを実行しています。あらゆるサポートを歓迎します。
Adobe フォーラムへのクロス投稿: https://forums.adobe.com/thread/1929387