2012-07-09 27 views
3

我使用下面的代码来获取屏幕高度:将document.write(screen.height)转换为coldfusion中的数字?

<CFSET rheight = "<script>document.write(screen.height);</script>"> 

rheight的价值出来为768,这是正确的。

但是,当我这样做: - :

<CFSET sheight = rheight/4> 

我得到以下错误:

值文件撰写(screen.height);不能转换为数字。

这个想法是在没有重新加载页面的情况下获得数字格式的屏幕高度。

+1

JavaScript不会在服务器上运行,即使它在服务器上运行,最多也只能得到服务器的'screen.height' – Esailija 2012-07-09 07:32:03

+0

@Esailija我意识到这一点。我使用的代码能够获取屏幕大小,但是以字符串格式。我的问题是,如何将此字符串转换为数字。 – 2012-07-09 07:38:01

+0

如果是这种情况,并且您正在客户端执行此操作,请删除所有服务器端的东西,因为它当时并不相关。 – Esailija 2012-07-09 07:39:58

回答

7

有许多方法可以做到这一点:

没有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" /> 

在这个例子中,我们正在创建一个包含了jQuery库的引用您的自定义代码来获取屏幕高度的字符串变量。

我们将高度设置为文本输入框的值。然后,我们可以提取该值并将其转换为数字。你可以转换的价值,然后才放入输入框,就像这样:

$('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> 

这是最基本的屏幕尺寸。CFM可以包括以下内容:

<cfsetting showdebugoutput="false" /> 
<cfparam name="URL.screenheight" type="numeric" default="800" /> 

<cfset session.screenheight = URL.screenheight /> 

<cfoutput>#session.screenheight#</cfoutput> 

(这不包括任何确认或失败捕获,你可能需要包括)

假设你的应用程序会话管理启用,这将为您送上价值SESSION范围可供整个应用程序使用。

这里要记住的一件事是,在刷新之前,SESSION范围中的值将不能用于原始调用页面(发出AJAX请求的页面)。

我希望有帮助。

+1

哇马特。什么反应! – 2012-07-09 20:05:47

+0

优秀的答案马特。谢谢你sooooooo多! – 2012-07-10 09:42:14

+0

我的高兴,很高兴有帮助:) – 2012-07-10 10:39:29