PHP变量不适用于高度和宽度

时间:2011-08-18 22:13:22

标签: php javascript iframe

<head>
<script type="text/javascript">
<!--

 var viewportwidth;
 var viewportheight;

 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

 if (typeof window.innerWidth != 'undefined')
 {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
 }

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
       viewportwidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
 }

 // older versions of IE

 else
 {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       viewportheight = document.getElementsByTagName('body')[0].clientHeight
 }

//-->
</script>
    <?php 
        $sizeh = '<script type="text/javascript">
          document.write(viewportheight);</script>';
        $sizew = '<script type="text/javascript">
          document.write(viewportwidth);
    </script>';
    ?>
</head>

//...

    <?php

<iframe  id="frame2" src="'.$row['url'].'" height="<script type=\'text/javascript\'>document.write(viewportheight);</script>px" width="'.$sizew.'px"  ></iframe> ';

?>

//以上仍然无法处理更改高度和宽度的值

将上述值从脚本传递到iframe不起作用,尽管打印变量表明它们内部有值

echo $sizeh; // shows ex:1093
echo $sizew; // shows ex:900

任何人请协助!!!

3 个答案:

答案 0 :(得分:4)

这里有很多错误。

首先,你不能像这样混合使用PHP和JavaScript。所有PHP在发送到浏览器之前处理,并且在发送到浏览器之后处理所有JavaScript。您所做的只是将文字字符串分配给$sizeh$sizew。这些变量将包含视口大小,因为这些值只能由JavaScript创建,这在 PHP代码运行后发生。

此外,您不能在PHP之外使用PHP变量。一旦用?>结束PHP解析,就不再使用PHP,并且无法再访问变量。

您需要在<?php?>标记内回显您的PHP变量。例如:

<iframe  id="frame2" 
         src=" <?php echo $row['url']; ?>" 
         height="<?php echo $sizeh; ?> px" 
         width="<?php echo $sizew; ?> px"  
         >
</iframe>

但同样,这些变量没有你认为的那些变量。您需要将这些变量设置为在PHP中具有整数值,或者您需要废弃整个事物并使用 JavaScript设置iframe维度。

编辑:我对JavaScript不太满意,所以几乎肯定有更好的方法( * cough * jQuery * cough * ),但这应该足够好了:

首先,您需要在<script>部分的<head>块内创建JavaScript函数。将其命名为resize_iframe。在此函数中,您将捕获<iframe>元素并设置其大小:

<script type="text/javascript">
  function resize_iframe() {
    var iframe = document.getElementById("my_iframe");
    iframe.style.height = viewportheight + "px";
    iframe.style.width  = viewportwidth  + "px";
  }
</script>

接下来,在<body>部分,您将正常创建HTML页面。这里要注意的两件事是当你制作<iframe>元素时,你需要:

  • 确保为元素提供的id值与您在JavaScript函数中使用的值相同
  • 在iframe上设置src属性时,您需要记住将PHP回显包装在<?php?>标记中

像这样:

<iframe id="my_iframe"
        src="<?php echo $row['url']; ?>"
></iframe>

最后,您希望从加载文档其余部分后发生的resize_iframe块调用<javascript>函数。例如,将其放在文档的结束</body>标记之前。这样,浏览器就已经创建了您正在捕获的<iframe>元素,因此JavaScript将会存在以进行修改。当该函数运行时,它将调整<iframe>

的大小
<script type="text/javascript"> resize_iframe(); </script>
</body>

还有一件事:我不确定你在哪里获得viewportwidthviewportheight的值,但这些不是JavaScript的内置变量。我只能假设你有其他代码来创建这些值。如果没有,你需要写它。

答案 1 :(得分:0)

我认为,因为你的变量“在其中,你最终会得到:

<iframe  id="frame2" src="'.row['ur;'].'"
height="<script type="text/javascript">
document.write(viewportheight);</script>px"
width="<script type="text/javascript">document.write(viewportwidth);</script>px">
</iframe>

所以“height”和“width”属性只包含<script type=,其余的都是垃圾可以这么说

我假设“<iframe....”行包含在<?php...?>标记内,并且前面有某种形式的回声。如果没有,你就会遇到麻烦

PS - 抱歉格式化

答案 2 :(得分:-1)

php只能在你需要键入的php标签之间使用

<?php echo $sizeh; ?>

<?=$sizeh;?>

如果你的主机支持短标签。