当前,我正在使用以下PHP + JavaScript代码来检测客户端浏览器窗口大小
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if(isSet($_GET['w']) && isSet($_GET['h']))
{
$w = $_GET['w'];
$h = $_GET['h'];
}
if(!$w && !$h)
{
$pos= strpos($url, '?');
if($pos===false)
{
echo '<script type="text/javascript">';
echo "var w = screen.width;
var h = screen.height;
window.location.href = '".$url."?w='+w+'&h='+h;
</script>'";
}
else {
echo '<script type="text/javascript">';
echo "var w = screen.width;
var h = screen.height;
window.location.href = '".$url."&w='+w+'&h='+h;
</script>'";
}
}
我想知道,有没有什么方法可以优化代码(通过ajax等发布)或简单的方法?
并非如此,因为您必须先往返于Broser才能确定屏幕尺寸。
如果仅需要后续请求的屏幕尺寸,则可以进行ajax调用并将值保存在会话中(jquery示例):
$(document).ready(function() {
var w = screen.width;
var h = screen.height;
$.load('/yourPhpScriptToSaveTheSession.php?&w='+w+'&h='+h);
});
这里没有ajax
if ( $_GET["setscreen"] ) $_SESSION['display_resolution'] = $_GET['screenwidth'] . 'x' . $_GET['screenheight'];
if ( $_GET["setscreen"] ) header('Location: ' . $_SERVER['PHP_SELF']);
if ( ! $_SESSION['display_resolution'] ) echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?setscreen=1&screenwidth="+screen.width+"&screenheight="+screen.height;</script>';
会话显示分辨率包含类似于以下的字符串:1280 x 1024