<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
任何人请协助!!!
答案 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>
元素时,你需要:
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>
还有一件事:我不确定你在哪里获得viewportwidth
和viewportheight
的值,但这些不是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;?>
如果你的主机支持短标签。