2009-05-21 20 views

risposta

2

Si dovrebbe passare a uno script PHP da JavaScript come fa la maggior parte del codice di monitoraggio (con una richiesta di immagine trasparente).

+0

e ancora non è possibile dire se l'utente ridimensiona la finestra o qualsiasi altro evento del genere .. – xaxxon

4

Dovrete usare PHP insieme a JavaScript, come 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

No, non posso. PHP viene eseguito sul server, quindi non è in grado di rilevare le impostazioni del client a meno che non si adottino specifici passaggi sul lato client per passare le informazioni agli script PHP sul server.

+0

Dovrete usare PHP insieme con JavaScript –

0

dimensioni Monitor non può essere ottenuto utilizzando JS, si deve fare un sondaggio :)

+1

Ugh? Sì, può. – Lloyd

+3

Lloyd: è possibile rilevare la risoluzione dello schermo, ma non le dimensioni del monitor. Una risoluzione 1600x1200 può significare un vecchio CRT da 21 ", un LCD moderatamente grande e uno schermo piccolo molto bello e denso intorno a 16" –

+0

+1 perché * la dimensione * non può essere letta come da Csaba – cjk

5

Si prega di fare notare che alcuni di noi come i nostri browser non-elevata. Forse staresti meglio cercando di rilevare la dimensione del browser piuttosto che la risoluzione dello schermo. Presumo che il JS per fare entrambi sarebbe molto simile, ma in realtà non so che sia il caso.

Inoltre, qual è la risoluzione dello screen reader di un cieco?

+2

+1. Ho una risoluzione dello schermo di 2560x1600, non riesco quasi mai a funzionare al massimo. Dovresti leggere le dimensioni della porta di visualizzazione (area della finestra senza contare le barre degli strumenti, le barre di scorrimento, la barra di stato e le decorazioni delle finestre). – SpliFF

0

Si noti che JS può controllare le dimensioni della finestra del browser, ma questa dimensione include barre degli strumenti utente, barre di scorrimento, ecc ... L'area dell'area di lavoro reale nel browser dipende da quelle dimensioni della barra degli strumenti.

1

Alcune persone richiedono dimensioni del browser per il devoloping mobile. Questa è un'informazione essenziale in alcuni casi.

L'utilizzo di WURFL e WALL può aggirare il problema poiché la maggior parte dei telefoni cellulari non supporta JS.

2

Anche io stavo cercando questo, ma ho trovato che nessuna di queste risposte rispondeva veramente alla domanda! In effetti, non c'è modo per PHP di conoscere la risoluzione dello schermo dal momento che è in esecuzione sul lato server. Poiché tali informazioni non vengono passate nelle variabili di ambiente HTTP, abbiamo bisogno di un'altra route. Javascript è un'alternativa.

L'esempio seguente è una pagina PHP che verifica la trasmissione di una variabile resolution nella richiesta HTTP. Se non trova la variabile resolution, crea un breve bit di JavaScript nella pagina che passa quella variabile e l'altezza e la larghezza lungo un reindirizzamento a se stesso. Ovviamente, quando la pagina viene caricata di nuovo dopo il reindirizzamento, tutte le variabili verranno impostate e PHP conoscerà la risoluzione.

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

Alla fine ho trovato una soluzione piuttosto insoddisfacente. Funziona, ma è brutto, aggiungendo cruft all'URL e richiedendo un reindirizzamento. Tuttavia, potrebbe ispirare qualcuno a pubblicare una risposta migliore. Cordiali saluti, credito in cui il credito è dovuto, questa risposta è stata ispirata da this post.

+0

Si conosce la risoluzione in un determinato momento .. ma quando si carica dopo il reindirizzamento, chissà qual è la risoluzione. – xaxxon

2

So che questa non è la risposta migliore, quindi risparmia il 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> 
Problemi correlati