【问题标题】:can php detect client browser monitor size/resolution?php 可以检测客户端浏览器监视器的大小/分辨率吗?
【发布时间】:2010-10-27 21:14:22
【问题描述】:

php可以检测IP、主机名、客户端代理等。php可以检测客户端浏览器监视器大小/分辨率吗?

【问题讨论】:

标签: php resolution detect


【解决方案1】:

不,它不能。 PHP 在服务器上运行,因此它无法检测客户端设置,除非您采取特定的客户端步骤将信息传递给服务器上的 PHP 脚本。

【讨论】:

  • 你必须同时使用 PHP 和 JavaScript
【解决方案2】:

请注意,我们中的一些人喜欢我们的浏览器未最大化。也许您最好尝试检测浏览器大小而不是屏幕分辨率。我认为要执行的 JS 会非常相似,但我实际上并不知道会是这种情况。

另外,盲人的屏幕阅读器的分辨率是多少?

【讨论】:

  • +1。我有 2560x1600 的屏幕分辨率,我几乎从不最大化运行。您应该阅读视口大小(窗口区域不包括工具栏、滚动条、状态栏和窗口装饰)。
【解决方案3】:

您必须将 PHP 与 JavaScript 一起使用,例如 this example:

$url = $_SERVER['PHP_SELF'];

if( isset($HTTP_COOKIE_VARS["res"]) )
    $res = $HTTP_COOKIE_VARS["res"];

else {
    ?>
    <script language="javascript">
    <!--
    go();

    function go() 
    {
        var today = new Date();
        var the_date = new Date("August 31, 2020");
        var the_cookie_date = the_date.toGMTString();
        var the_cookie = "res="+ screen.width +"x"+ screen.height;
        var the_cookie = the_cookie + ";expires=" + the_cookie_date;
        document.cookie=the_cookie
            location = '<?echo "$url";?>';
    }
    //-->
    </script>
    <?php
}

//Let's "split" the resolution results into two variables
list($width, $height) = split('[x]', $res);

//Take the width and height minus 300
$tb_width = $width-300;
$tb_height = $height-300;

//Make the table
print("<table align=center border=1 width=" .$tb_width . " height=" . $tb_height . " >
    <tr><td align=center>Your screen resolution is " . $width . " by " . $height . ".<br>
    The width/height of this table is " . $tb_width . " by " . $tb_height . ".</td></tr>
    </table>");

【讨论】:

  • 注意! 按原样,这段代码只是无限循环。
【解决方案4】:

我也在寻找这个,但发现这些答案都没有真正回答这个问题!事实上,PHP 无法知道屏幕分辨率,因为它是在服务器端运行的。由于该信息未在 HTTP 环境变量中传递,因此我们需要另一个路由。 Javascript 是一种替代方案。

下面的示例是一个 PHP 页面,它检查在 HTTP 请求中传递的 resolution 变量。如果它没有找到 resolution 变量,那么它会在页面上创建一个简短的 JavaScript 代码,将这个变量以及高度和宽度重定向回它自己。当然,当页面在重定向后再次加载时,所有变量都会被设置,PHP 会知道分辨率。

<?php
    if(!isset($_GET['resolution'])) {     
        echo "<script language=\"JavaScript\">     
<!--      
    document.location=\"$PHP_SELF?resolution=1&width=\"+screen.width+\"&height=\"+screen.height;     
//-->     
</script>";     
    } else {
        // Code to be displayed if resolution is detected     
        if(isset($_GET['width']) && isset($_GET['height'])) {     
            echo "Width: " . $_GET['width'] . " and Height: " . $_GET['height'] . "<br />";
        } else {     
            echo "Resolution not detected.";
        }     
    }
?>

最后我发现这是一个非常不令人满意的解决方案。它可以工作,但很丑陋,会在 URL 中添加杂乱无章的内容并需要重定向。不过,它可能会激发某人发布更好的答案。仅供参考,信用到期,这个答案的灵感来自this post

【讨论】:

  • 您知道某个时间点的分辨率.. 但是当您在重定向后加载时,谁知道分辨率是多少。
【解决方案5】:

我知道这不是最好的答案,所以不要投反对票。

<script>
/*
    JAVASCRIPT IS ON TELL THE DEVELOPER#
*/
// GET BROWSER WIDTH AND HEIGHT
var bh=screen.height;
var bw=screen.width;
window.location="?doSubmit=do&js=yes&bh="+bh+"&bw="+bw+"";
</script>

<noscript>
    <!--
        JAVASCRIPT IS OFF TELL THE DEVELOPER#
    -->
    <meta http-equiv='refresh' content='0;url=?doSubmit=do&js=off&bh=off&bw=off'>

</noscript>

<?

if($_GET["doSubmit"]=="do"){

    // VARS

        $bh=$_GET["bh"];
        $bw=$_GET["bw"];
        $js=$_GET["js"];

    // PRINT HTML ?>

<table>

    <tr><td><strong>Browser Width:</strong></td><td><?=$bw;?>px</tr>
    <tr><td><strong>Browser Height:</strong></td><td><?=$bh;?>px</tr>
    <tr><td><strong>JavaScript Detection (y/n):</strong></td><td><?=$js;?></tr>

</table>

【讨论】:

    【解决方案6】:

    有些人需要浏览器大小才能进行移动开发。在某些情况下,这是必不可少的信息。

    使用 WURFL 和 WALL 可以解决这个问题,因为大多数手机不支持 JS。

    【讨论】:

      【解决方案7】:

      使用JS无法获取显示器大小,必须进行投票:)

      【讨论】:

      • Lloyd:可以检测屏幕分辨率,但不能检测显示器大小。 1600x1200 分辨率可能意味着旧的 21 英寸 CRT、中等大小的 LCD 以及 16 英寸左右的非常漂亮和密集的小屏幕
      • 无法检测显示器大小,只能检测窗口分辨率。
      【解决方案8】:

      注意,JS 可以检查浏览器的窗口大小,但这个大小包括用户工具栏、滚动条等...浏览器中真正的工作区区域取决于这些工具栏的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 2020-11-01
        • 2012-03-18
        相关资源
        最近更新 更多