1

我有这个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 变量?

4

1 回答 1

6

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

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

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

您的选择包括:

  • 使用 JavaScript 完成处理,而不是尝试将其传递回 Perl
  • 使用 Ajax 发出新的 HTTP 请求
  • 设置location.href为使用查询字符串中传递的数据加载新页面
  • 在不使用当前逻辑的情况下找到一种方法来实现您的(未指定)目标(例如,您可以使用 CSS 媒体查询根据浏览器尺寸设置不同的页面样式)。
于 2012-05-08T08:28:42.653 回答