2009-05-21 3 views

답변

2

대부분의 추적 코드처럼 (투명 이미지 요청으로) 자바 스크립트에서 PHP 스크립트까지 전달해야합니다.

+0

와 사용자가 윈도우 나 같은 다른 이벤트의 크기를 조정하는 경우는 아직 말할 수 없다 ... 당신은 함께 자바 스크립트 – xaxxon

4

당신은 this example에서처럼, 자바 스크립트와 함께 PHP를 사용해야합니다 :

$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>"); 
25

아니, 문이 안 열려. PHP는 서버에서 실행되므로 특정 클라이언트 측 단계를 거치지 않고 정보를 서버의 PHP 스크립트에 전달하지 않으면 클라이언트 설정을 감지 할 수 없습니다.

+0

? 예, 그럴 수 있습니다. –

0

모니터 크기는 JS를 사용하여 얻을 수 없습니다, 당신은 설문 조사를 확인해야합니다 :)

+1

윽와 PHP를 사용해야합니다 – Lloyd

+3

Lloyd : 화면 해상도는 감지 할 수 있지만 모니터 크기는 감지 할 수 없습니다. 1600x1200 해상도는 오래된 21 인치 CRT, 중간 크기의 LCD, 16 주위의 실제 크기가 더 작고 고밀도 인 작은 화면을 의미 할 수 있습니다. –

+0

+1 크기 *를 읽을 수 없으므로 Csaba – cjk

5

우리의 브라우저와 같은 우리의 일부가 아닌 최대주의를주세요. 아마도 화면 해상도가 아닌 브라우저 크기를 감지하는 것이 좋습니다. 나는 JS가 둘 중 하나를 수행하는 것이 매우 비슷하다고 생각하지만, 사실 그것이 사실인지는 모른다.

또한 시각 장애인의 스크린 리더의 해상도는 어떻게됩니까?

+2

+1. 2560x1600 화면 해상도를 가지고 있으며 거의 ​​최대화를 실행하지 않습니다. 보기 포트 크기 (도구 모음, 스크롤 막대, 상태 표시 줄 및 창 장식을 포함하지 않는 창 영역)를 읽어야합니다. – SpliFF

0

JS는 브라우저의 창 크기를 확인할 수 있지만이 크기에는 사용자 도구 모음, 스크롤 막대 등이 포함됩니다. 브라우저의 실제 작업 영역은 해당 도구 모음 크기에 따라 다릅니다.

1

일부 사람들은 모바일 devoloping을 위해 브라우저 크기가 필요합니다. 어떤 경우에는 이것은 필수 정보입니다.

WURFL과 WALL을 사용하면 대부분의 휴대 전화가 JS를 지원하지 않으므로이 문제를 해결할 수 있습니다.

2

나는 이것도 찾고 있었지만,이 답변들 중 어느 것도 정말로 그 질문에 답을 찾지 못했습니다! 실제로 PHP가 서버 측에서 실행 중이므로 화면 해상도를 알 수있는 방법이 없습니다. 이 정보는 HTTP 환경 변수에 전달되지 않으므로 다른 경로가 필요합니다. Javascript가 하나의 대안입니다.

아래 예제는 HTTP 요청에서 전달되는 변수 resolution을 확인하는 PHP 페이지입니다. 변수 resolution을 찾지 못하면 해당 변수와 높이 및 너비를 전달하는 페이지에 간단한 자바 스크립트 비트를 생성하여 리디렉션에서 다시 그 자체로 되돌립니다. 물론 리디렉션 후에 페이지가 다시로드되면 모든 변수가 설정되고 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에 cruft를 추가하고 리디렉션이 필요합니다. 그래도 더 나은 답변을 게시하는 데 영감을 줄 수 있습니다. 참고로 크레딧이 만료되는 크레딧은 this post에서 영감을 얻었습니다.

+0

당신은 한 시점에서 해상도를 알고 있습니다.하지만 리디렉션 후에로드 할 때까지 누가 해상도가 무엇인지 압니다. – xaxxon

2

나는 이것이 최선의 해결책이 아니라는 것을 알고 있으므로, downvote를 남겨주세요.

<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> 
관련 문제