2009-05-21 15 views

Odpowiedz

2

Musiałbyś przekazać to do skryptu PHP z JavaScript, tak jak robi to większość kodu śledzenia (z przejrzystym żądaniem obrazu).

+0

i nadal nie można powiedzieć, jeśli użytkownik zmieni rozmiar okna lub innych wydarzeń, takich jak że .. – xaxxon

4

Musisz używać PHP wraz z JavaScript, jak w 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>"); 
25

Nie, nie mogę. PHP działa na serwerze, więc nie może wykryć ustawień klienta, chyba że podejmiesz konkretne kroki po stronie klienta, aby przekazać informacje do skryptów PHP na serwerze.

+0

Musisz używać PHP wraz z JavaScript –

0

rozmiar monitora nie można uzyskać przy użyciu JS, trzeba zrobić ankietę :)

+1

Ugh? Tak, może. – Lloyd

+3

Lloyd: można wykryć rozdzielczość ekranu, ale nie rozmiar monitora. Rozdzielczość 1600x1200 może oznaczać stary 21-calowy monitor CRT, umiarkowanie duży ekran LCD i naprawdę piękny i gęsty mniejszy ekran o przekątnej 16 " –

+0

+1, ponieważ rozmiar * nie może być odczytany, ponieważ nie można wykryć rozmiaru monitora Csaba – cjk

5

Proszę pamiętać, że niektóre z nas jak nasze przeglądarek niż maksymalne. Być może lepiej będzie, jeśli spróbujesz wykryć rozmiar przeglądarki, a nie rozdzielczość ekranu. Zakładam, że JS to albo będzie bardzo podobny, ale tak naprawdę nie wiem, że tak jest.

Ponadto, jaka jest rozdzielczość czytnika ekranu dla niewidomych?

+2

+1. Mam rozdzielczość ekranu 2560x1600, prawie nigdy nie zmaksymalizowałem. Powinieneś czytać rozmiar portu widoku (obszar okna nie zliczający pasków narzędzi, paski przewijania, pasek stanu i dekoracje okien). – SpliFF

0

Należy zauważyć, że JS może sprawdzić rozmiar okna przeglądarki, ale ten rozmiar obejmuje paski narzędzi użytkownika, paski przewijania itp ... Rzeczywisty obszar roboczy w przeglądarce zależy od rozmiaru tych pasków narzędzi.

1

Niektóre osoby wymagają rozmiaru przeglądarki do mobilnego wydzielania. Jest to niezbędna informacja w niektórych przypadkach.

Korzystanie z WURFL i WALL może obejść ten problem, ponieważ większość telefonów komórkowych nie obsługuje JS.

2

Szukałem tego również, ale znalazłem żadnej z tych odpowiedzi naprawdę odpowiedział na pytanie! Rzeczywiście, nie ma sposobu, aby PHP rozpoznało rozdzielczość ekranu, ponieważ działa po stronie serwera. Ponieważ te informacje nie są przekazywane w zmiennych środowiskowych HTTP, potrzebujemy innej trasy. JavaScript to jedna alternatywa.

Przykład poniżej to strona PHP, która sprawdza, czy zmienna resolution jest przekazywana w żądaniu HTTP. Jeśli nie znajdzie tej zmiennej resolution, tworzy krótki skrypt JavaScript na stronie, która przekazuje tę zmienną, a wysokość i szerokość wzdłuż w przekierowaniu z powrotem do siebie. Oczywiście po ponownym załadowaniu strony po przekierowaniu wszystkie zmienne zostaną ustawione, a PHP rozpozna rozdzielczość.

<?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."; 
     }  
    } 
?> 

W końcu uznałem to za niezadowalające rozwiązanie. Działa, ale jest brzydka, dodaje cruft do adresu URL i wymaga przekierowania. Mimo to może zainspirować kogoś do napisania lepszej odpowiedzi. FYI, kredyt, na który należy się kredyt, ta odpowiedź została zainspirowana przez this post.

+0

Znasz rozdzielczość w pewnym momencie .. ale do czasu ładowania po przekierowaniu, kto wie, jaka jest rozdzielczość. – xaxxon

2

Wiem, że to nie jest najlepsza odpowiedź, więc oszczędzaj.

<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> 
Powiązane problemy