客户端显示分辨率检测

问题描述 投票:0回答:2

当前,我正在使用以下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等发布)或简单的方法?

php javascript ajax resolution
2个回答
1
投票

并非如此,因为您必须先往返于Broser才能确定屏幕尺寸。

如果仅需要后续请求的屏幕尺寸,则可以进行ajax调用并将值保存在会话中(jquery示例):

$(document).ready(function() {
  var w = screen.width;
  var h = screen.height;
  $.load('/yourPhpScriptToSaveTheSession.php?&w='+w+'&h='+h);
});

0
投票

这里没有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

© www.soinside.com 2019 - 2024. All rights reserved.