2009-05-21 2 views

Antwort

2

Das müssten Sie wie bei den meisten Tracking-Codes (mit einer transparenten Image-Anfrage) an ein PHP-Skript von JavaScript weitergeben.

+0

und man kann noch nicht sagen, ob der Benutzer das Fenster oder andere Ereignisse wie das ändert die Größe .. – xaxxon

4

Sie müssen PHP verwenden, zusammen mit JavaScript, wie in 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

Nein, es kann nicht. PHP wird auf dem Server ausgeführt, sodass Clienteinstellungen nicht erkannt werden können, es sei denn, Sie nehmen bestimmte clientseitige Schritte vor, um die Informationen an die PHP-Skripts auf dem Server weiterzuleiten.

+0

Sie müssen PHP verwenden, zusammen mit JavaScript –

0

Monitor-Größe kann nicht mit JS erhalten wird, müssen Sie eine Umfrage machen :)

+1

Ugh? Ja, kann es. – Lloyd

+3

Lloyd: Sie können die Bildschirmauflösung, aber nicht die Monitorgröße erkennen. Eine Auflösung von 1600x1200 kann eine alte 21 "CRT, eine mässig große LCD, und eine wirklich schöne und dichte kleinere Bildschirm um 16" –

+0

+1, weil * Größe * kann nicht nach Csaba – cjk

5

Bitte beachten Sie tun, dass einige von uns wie unser Browser nicht maximieren. Vielleicht sollten Sie besser versuchen, die Browsergröße als die Bildschirmauflösung zu erkennen. Ich gehe davon aus, dass sich das JS sehr ähnlich machen würde, aber das weiß ich eigentlich nicht.

Was ist auch die Auflösung eines Bildschirmlesers eines blinden Mannes?

+2

+1. Ich habe 2560x1600 Bildschirmauflösung, ich lief fast nie maximiert. Sie sollten die Größe des Ansichtsports lesen (Fensterbereich ohne Symbolleisten, Bildlaufleisten, Statusleiste und Fensterdekorationen). – SpliFF

0

Beachten Sie, dass JS die Fenstergröße des Browsers überprüfen kann, aber diese Größe enthält Symbolleisten, Bildlaufleisten usw. Echte Arbeitsbereiche im Browser hängen von der Größe dieser Symbolleisten ab.

1

Manche Leute benötigen Browsergröße für die mobile Entwicklung. Dies ist in einigen Fällen eine wesentliche Information.

Mit WURFL und WALL können Sie umgehen, da die meisten Handys JS nicht unterstützen.

2

Ich war auch auf der Suche nach, fand aber keine dieser Antworten beantwortet wirklich die Frage! In der Tat gibt es für PHP keine Möglichkeit, die Bildschirmauflösung zu kennen, da sie auf der Serverseite läuft. Da diese Informationen nicht in HTTP-Umgebungsvariablen weitergegeben werden, benötigen wir eine andere Route. Javascript ist eine Alternative.

Das folgende Beispiel ist eine PHP-Seite, die überprüft, ob eine resolution Variable in der HTTP-Anforderung übergeben wird. Wenn es die resolution Variable nicht findet, dann erstellt es ein kurzes Stück JavaScript auf der Seite, die diese Variable und die Höhe und Breite entlang einer Umleitung an sich selbst übergibt. Natürlich, wenn die Seite nach der Weiterleitung wieder geladen wird, werden alle Variablen gesetzt und PHP kennt die Auflösung.

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

Am Ende fand ich das eine ziemlich unbefriedigende Lösung. Es funktioniert, aber es ist hässlich, fügt cruft der URL hinzu und erfordert eine Weiterleitung. Dennoch könnte es jemanden inspirieren, eine bessere Antwort zu veröffentlichen. FYI, Kredit, wo Kredit fällig ist, wurde diese Antwort von this post inspiriert.

+0

Sie kennen die Auflösung zu einem Zeitpunkt ... aber wenn Sie nach der Weiterleitung laden, weiß wer, was die Auflösung ist. – xaxxon

2

Ich weiß, das ist nicht die beste Antwort, so schone den 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>