Attribute
This tag is similar to cfprocessingdirective and acts as a compiler directive to include plugins for various features (device detection and device API). You can use this tag to load all the required device plugins and device detection plugins.
Syntax
<cfclientsettings enableDeviceAPI = "true|false" detectDevice = "true|false" deviceTimeout = Number mobileServer validationCFC>
Attribute |
Req/Opt |
Default |
Description |
---|---|---|---|
enableDeviceAPI |
Optional |
false |
Enable/disable the device API. |
detectDevice |
Optional |
false |
Enable/disable the device detection plugin. |
deviceTimeout |
Optional |
10 |
The timeout for loading the plugins (in seconds). If the plug-in takes more than 10 seconds (default timeout value) to load, you will get an error. Try increasing the timeout to avoid this problem. If you have specified enableDeviceAPI as "true", the device plugins will be loaded. After the device plugins are loaded, ColdFusion waits for an event "DeviceReady" to be triggered. Once the DeviceReady event is triggered successfully, the execution of CFML starts. In a desktop browser, the DeviceReady event will not be triggered. However, for a mobile application (shell application or packaged application), the event is triggered. |
mobileServer |
Optional |
|
The server where the mobile app is located. |
validationCFC |
Optional |
|
The path of the cfc that contains the handler cfc, which validates the access token. For more information, see the section Helper CFC in CFML for mobile development. |
The device detection feature of CFML allows you to identify the device properties and characteristics, which can be used to determine the best content, layout, mark-up or application to serve to the given device.
These characteristics include screen size, browser type and version, media support, and the level of support for CSS, HTML, and JavaScript.
For getting the device features and capabilities, you need to specify an attribute detectdevice in the <cfclientsettings> tag and set it to true:
<cfclientsettings detectDevice=true /> |
If the detectdevice attribute is set to true, ColdFusion automatically detects the features and capabilities of the device (width, height, and orientation) on which the application is running.
The following example shows the usage of the device detection feature:
<cfclientSettings detectDevice=true /> |
In the above example, we are trying to find if the device supports HTML5 Canvas. cfclient.canvas returns a boolean value indicating the support for the HTML5 Canvas property.
In the above example, we are trying to find if the device supports HTML5 Canvas. cfclient.canvas returns a boolean value indicating the support for the HTML5 Canvas property.
ColdFusion Server internally uses Modernizer JavaScript library (version 2.6.2) for the device detection feature.
The following table lists the supported device features with example usage:
Features | Syntax |
applicationCache | cfclient.properties.applicationcache |
Audio | cfclient.properties.audio |
Canvas | cfclient.properties.canvas |
Canvas Text | cfclient.properties.canvastext |
CSS 2D Transforms | cfclient.properties.csstransforms |
CSS 3D Transforms | cfclient.properties.csstransforms3d |
CSS Animations | cfclient.properties.cssanimations |
CSS Columns | cfclient.properties.csscolumns |
CSS Generated Content | cfclient.properties.generatedcontent |
CSS Gradients | cfclient.properties.cssgradients |
CSS Reflections | cfclient.properties.cssreflections |
CSS Transitions | cfclient.properties.csstransitions |
Device Group Descriptions | cfclient.properties.deviceGroupDescription [array] |
Device Group Name | cfclient.properties.deviceGroupName [array] |
Device Height | cfclient.properties.deviceHeight |
Device Width | cfclient.properties.deviceWidth |
Drag ‘n Drop | cfclient.properties.draganddrop |
Geolocation | cfclient.properties.geolocation |
Hash Change | cfclient.properties.hashchange |
Height | cfclient.properties.height |
History | cfclient.properties.history |
IndexedDB | cfclient.properties.indexeddb |
Input Attributes | cfclient.properties.input.* (* refers to attributes for input elements. For possible values, see the Modernizr documentation) |
Input Types | cfclient.properties.inputtypes.* (* refers to input type attributes. For possible values, see the Modernizr documentation) |
localStorage | cfclient.properties.localstorage |
Orientation | cfclient.properties.orientation |
Post Message | cfclient.properties.postmessage |
Session Storage | cfclient.properties.sessionstorage |
Touch Events | cfclient.properties.properties.touch |
Video | cfclient.properties.video |
Web Sockets | cfclient.properties.websockets |
Web SQL Database | cfclient.properties.websqldatabase |
Web Workers | cfclient.properties.webworkers |
Width | cfclient.properties.width |
For the description on all above mentioned features, see the Modernizer documentation.
Media queries allow you to apply changes to the page design based on the viewing size and capability of the device on which your content is displayed. A media query consists of one or more logical expressions formed using the detected device data that checks for certain conditions of media feature and based on the result of this expression we can change the layout of the page dynamically.
If you are building a mobile application, you can easily detect the characteristics of the device and customize the layout just for that device as shown in the following example:
<cfclientsettings detectDevice=true /> |
In the above example, the web page is customized for different devices based on their screen sizes.
For handling the device orientation changes, you can register a listener using the addOrientationListener() function:
<cfclientsettings detectDevice=true /> |
In the above example, addOrientationListener function is used to register a listener that monitors the orientation of the device (landscape or portrait). When the orientation of the device changes, an orientationHandler call back function is invoked.
You can use the removeOrientationListener to un-register the listener:
<cffunction access="public" name="removeorientationhandler" |
You can also add multiple listeners:
<cfset cfclient.addOrientationListener(orientationHandler1)> |
When the device orientation changes, all the registered listener functions are invoked.
For handling the window resizing events, you can register a listener using the addResizeListener() function:
<cfclientsettings detectDevice=true /> |
You can also add multiple listeners:
<cfset cfclient.addResizeListener(resizeHandler1)> |
When there is a change in window size all the registered resize listener functions are invoked. You can use removeResizeListener() to un-register the handlers.
<cffunction access="public" name="removeresizehandler" |
Using the attributes mobileServer and validationCFC,
<cfclientsettings mobileserver='http://localhost:8500' enabledeviceapi="false" validationcfc='C:\ColdFusion2018\cfusion\wwwroot\CheckAuthFlow\handler.cfc'>
In the <cfclientsettings> tag, an attribute called deviceTimeOut can be specified. The default value of deviceTimeout is 10 secs. When enableDeviceApi or detectDevice is set as true, the deviceTimeOut value will be honored. Time will be provided for the required plugins to be loaded. After the specified time, an exception will be thrown.
<cfclientsettings detectDevice=true deviceTimeOut="30" />
Sign in to your account