我正在使用以下代码获取屏幕高度:
<CFSET rheight = "<script>document.write(screen.height);</script>">
rheight的值为768,这是正确的。
但是当我执行以下操作时:-:
<CFSET sheight = rheight / 4>
我收到以下错误:
值document.write(screen.height)无法转换为数字。
目的是在不重新加载页面的情况下获取屏幕高度的数字格式。
我正在使用以下代码获取屏幕高度:
<CFSET rheight = "<script>document.write(screen.height);</script>">
rheight的值为768,这是正确的。
但是当我执行以下操作时:-:
<CFSET sheight = rheight / 4>
有多种方式可以实现这个目标:
不使用 AJAX
如果不使用任何 AJAX 请求,您可以使用以下代码实现所需的结果(已在 CF 9.0.2 和 CF10 中进行测试):
<cfset rheight = "
<script type='text/javascript'
src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'>
</script>
<script>
$(document).ready(function() {
$('input.screenHeight').val(screen.height);
alert($('input.screenHeight').val() / 4);
})
</script>">
<cfhtmlhead text="#rheight#" />
<input type="text" class="screenHeight" />
$('input.screenHeight').val(screen.height/4);
使用cfhtmlhead标记将字符串变量添加到文档头部:
http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ae9.html
这仅适用于原始页面视图。如果您需要在页面更改或响应式设计布局更改后获取尺寸,则需要运行AJAX请求以返回屏幕尺寸。
无需CFML
当然,您完全不需要使用ColdFusion。您可以仅通过JavaScript获得相同的数字转换:
<script type='text/javascript'
src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'>
</script>
<script type='text/javascript'>
var getScreenHeight = function() {
return screen.height;
}
$(document).ready(function() {
var screenheight = getScreenHeight();
console.log(screenheight/4);
})
</script>
然而,看起来您需要能够在ColdFusion中保留屏幕高度响应的值,如下所示:
使用AJAX和CFML
修改上面的JavaScript示例,我们可以创建一个AJAX请求将屏幕高度值发布到一个新的.cfm页面:
<script type='text/javascript'>
var getScreenHeight = function() {
return screen.height;
}
$(document).ready(function() {
var screenheight = getScreenHeight();
$.get("screensize.cfm",
{ screenheight: screenheight },
function(data) {
console.log('screen height has been set in the session scope: ' + data);
}
)
})
</script>
<cfsetting showdebugoutput="false" />
<cfparam name="URL.screenheight" type="numeric" default="800" />
<cfset session.screenheight = URL.screenheight />
<cfoutput>#session.screenheight#</cfoutput>
假设您的应用程序已启用会话管理,这将把您发送的值放在SESSION范围中,供整个应用程序使用。
这里需要记住的一件事是,在刷新之前,SESSION范围中的值对原始调用页面(发出AJAX请求的页面)不可用。
希望这能帮到您。
screen.height
。 - Esailija