如何将javascript值分配给Perl变量

时间:2012-05-08 08:24:28

标签: javascript html perl

我有这个javascript函数:

print <<"EOT";
<script type="text/javascript">
 function alertSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
    window.alert( 'Width = ' + myWidth );
    window.alert( 'Height = ' + myHeight );
}
</script>
EOT
print "<body onload='alertSize()'>";
print "</body>";

my $windowHeight = $q->param('myHeight');
my $windowWidth = $q->param('windowwidth');
print "<$windowHeight><$windowWidth>";

如何将javascript函数的值传递给我的Perl变量???

1 个答案:

答案 0 :(得分:6)

您的Perl正在服务器上运行。它会输出一些发送到客户端(浏览器)的文本。

然后,浏览器会解释该文本以及HTML和JavaScript。

如果不发出新的HTTP请求,则无法将数据传回Perl。

您的选择包括:

  • 使用JavaScript完成处理,而不是尝试将其传递回Perl
  • 使用Ajax发出新的HTTP请求
  • 设置location.href以使用查询字符串中传递的数据加载新页面
  • 在不使用当前逻辑的情况下找到实现(未指定)目标的方法(例如,您可以使用CSS媒体查询根据浏览器维度对页面进行不同的样式设置)。