使用PHP和/或JavaScript进行iPhone4视网膜显示检测

Cor*_*rey 9 javascript php iphone browser-detection retina-display

我正在创建一个检测脚本,当用户到达我的网站时,它会嗅出任何带有视网膜显示器(或类似设备)的设备(目前只有iPhone4).因为分辨率更高,我需要推动更高分辨率的图像/图形.我能找到的唯一解决方案(使用PHP和JavaScript)是检测devicePixelRatio并设置cookie.这是我正在使用的代码:

<?php
    $imgPath = "images/";
    if(isset($_COOKIE["imgRes"])){
        $imgRes = $_COOKIE["imgRes"];
        if( $imgRes  >= 2 ){
            $imgPath = "images/highRes/";
        }
    } else {
?>
    <script language="javascript">
        var the_cookie = "imgRes="+window.devicePixelRatio+";"+the_cookie;
        document.cookie = the_cookie;
        location = '<?=$_SERVER['PHP_SELF']?>';
    </script>
<?php
    }
?>
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过更好的方法,或者有任何改进此脚本的建议.这个脚本确实有效,只是感觉很脏.

Sim*_*lin 9

Brian Cray的回答似乎是错误的.

在javascript中执行此操作的正确方法是:

var retina = window.devicePixelRatio && window.devicePixelRatio >= 2;
Run Code Online (Sandbox Code Playgroud)


Mat*_*ski 2

您可以使用此处描述的 CSS3 媒体查询,但这只能让您在客户端添加额外的 CSS 规则,而不能在服务器端调整图像路径。这对于静态图像数量有限的网站来说非常有效。