我正在尝试使用以下代码让浏览器视口托架将Javascript变量传递给PHP:
第一个代码
<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
// output the geometry variables
echo "Screen width is: ". $_GET['width'] ."<br />\n";
echo "Screen height is: ". $_GET['height'] ."<br />\n";
} else {
// pass the geometry variables
// (preserve the original query string
// -- post variables will need to handled differently)
echo "<script language='javascript'>\n";
echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
. "&width=\" + screen.width + \"&height=\" + screen.height;\n";
echo "</script>\n";
exit();
}
?>
上面的代码给出了屏幕宽度和高度,这适用于所有浏览器,包括IE6,7和8。
但是我将其更改为screen.width
到 window.innerWidth
和 screen.height
到的那一刻window.innerHeight
喜欢这个 . "&width=\" + window.innerWidth + \"&height=\" + window.innerHeight;\n";
它适用于所有浏览器,但对于IE6,7和8,它说
Screen width is: undefined
Screen height is: undefined
在网上冲浪寻找解决方案时,我找到了另一段代码:
第二个代码
<script type="text/javascript">
var w=window,d=document,e=d.documentElement,g=d.getElementsByTagName('body')[0],x=w.innerWidth||e.clientWidth||g.clientWidth,y=w.innerHeight||e.clientHeight||g.clientHeight;
document.write('<p>Your viewport size is '+x+' x '+y+'</p>');
</script>
此代码显示浏览器视口,它在包括IE6,7和8在内的所有浏览器中都可以正常工作。
当我在php文件中同时运行两个代码时,第一个代码显示为undefined
abd,第二个代码完美运行。请参阅下面的屏幕截图
我不是新手程序员,也无法将第二个代码连接到第一个逻辑。请帮助我这样做。
以下是所有浏览器的屏幕截图:
Internet Explorer 6
Internet Explorer 7
Internet Explorer 8
Internet Explorer 9
Forefox
Google Chrome
戏
Safari浏览器
答案 0 :(得分:2)
document.documentElement.clientHeight/document.documentElement.clientWidth
答案 1 :(得分:1)
让我们以preier格式列出第二个代码
<script type="text/javascript">
var w=window;
var d=document;
var e=d.documentElement;
var g=d.getElementsByTagName('body')[0];
var x=w.innerWidth||e.clientWidth||g.clientWidth;
var y=w.innerHeight||e.clientHeight||g.clientHeight;
document.write('<p>Your viewport size is '+x+' x '+y+'</p>');
</script>
Javascript有一个很好的小技巧,||
(或)运算符可以用作if / else
例如,var x=w.innerWidth||e.clientWidth||g.clientWidth;
行是以下
var x = undefined;
if (w.innerWidth) {
x = w.innerWidth;
} else if (e.clientWidth) {
x = e.clientWidth;
} else if (g.clientWidth) {
x = g.clientWidth;
}
所以,这里发生的是IE没有定义变量window.innerWidth
,因此你得到undefined
。 Yout代码在这里停止,而工作代码尝试一些其他变量,那些是document.documentElement.clientWidth
(文档的宽度)和document.getElementsByTagName('body')[0].clientWidth
(页面主体的宽度)
Internet Explorer定义了其中的一个,它为您提供了正确的结果
返回您的代码:
将以下内容放在HTML页面
中<script type="text/javascript">
function GetScreenSize() {
var w=window;
var d=document;
var e=d.documentElement;
var g=d.getElementsByTagName('body')[0];
var x=w.innerWidth||e.clientWidth||g.clientWidth;
var y=w.innerHeight||e.clientHeight||g.clientHeight;
return {x:x, y:y};
}
</script>
echo " var sz = GetScreenSize()\n"; //Call the function to get the screen size
echo " location.href='${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}&width=' + sz.x + '&height=' + sz.x;\n";
答案 2 :(得分:0)
只需合并两个脚本?在你的标签中回应这个:
echo("var w=window,d=document,e=d.documentElement,g=d.getElementsByTagName('body')[0],x=w.innerWidth||e.clientWidth||g.clientWidth,y=w.innerHeight||e.clientHeight||g.clientHeight;")
echo("location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
. "&width=\" + x + \"&height=\" + y;\n";")
答案 3 :(得分:0)
感谢Andrew Brock, 你的代码也适用于我......
<?php
echo "<br /><br />";
if (isset ($_REQUEST['width'])) {
$width=$_REQUEST['width'];
} else {
$width=0;
}
if (isset ($_REQUEST['height'])) {
$height=$_REQUEST['height'];
} else {
$height=0;
}
?>
<html>
<head>
<title> width=<?echo $width?> & height=<?echo $height?> </title>
<script type="text/javascript">
function GetScreenSize() {
var w=window;
var d=document;
var e=d.documentElement;
var g=d.getElementsByTagName('body')[0];
var x=w.innerWidth||e.clientWidth||g.clientWidth;
var y=w.innerHeight||e.clientHeight||g.clientHeight;
return {x:x, y:y};
}
var size=GetScreenSize();
</script>
</head>
<body>
<br />
width is <?echo $width?>
<br />
height is <?echo $height?>
</body>
</html>
<?php
if (!isset($_REQUEST['width'])&& !isset($_REQUEST['height'])){
echo "<script language='javascript'>\n";
echo " var sz = GetScreenSize()\n";
echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
. "&width=\" + sz.x + \"&height=\" + sz.y;\n";
echo "</script>\n";
}
?>
尝试“http://192.168.0.9:6060/second/temp_1.php”
你会得到
由于