Javascript ve / veya php ziyaretçinin ekran çözünürlüğünü nasıl alabilirim?

6 Cevap php

Ben bu yüzden düzgün bir jquery thickbox kendi ekranında yaklaşık% 75 kapsayacak yapabilirsiniz benim sayfasını ziyaret eden bir ziyaretçinin ekran çözünürlüğünü bilmek istiyorum.

Soru veya benim sorunu çözmek yardım için Çözümler büyük takdir!

6 Cevap

Ne insanlar her zaman kendi tarayıcı penceresi kendi ekranı gibi aynı boyutta maksimuma düşündürüyor? Bilmiyorum, ben tek değilim.

Ne istiyorum kendi window% 75 karşılamaktır. Bu CSS kullanarak yapılabilir; Söz konusu eleman daha sonra, gövde elemanının bir çocuk ise

#box {
    position: absolute;
    top: 12.5%;
    left: 12.5%;
    width: 75%;
    height: 75%;
}

muhtemelen (Ben olsa, onu test ettik) onu yapacağız.

EDIT: Ben şimdi ekleyerek, onu test ettik

html, body {
    width: 100%;
    height: 100%;
}

beklendiği gibi ve en az Firefox 3.5 :-) olarak çalıştı

JavaScript bu:

screen.width
screen.height

Ancak PHP istemci erişimi yoktur. Yani PHP komut dosyası için JavaScript tarafından toplanan değerleri geçirmek gerekir.

Ayrıca her kullanıcı, tam ekran modunda onun pencereleri vardır. Böylece daha iyi available window width/height kullanmalısınız.

JQuery kullanıyorsanız, tarayıcı penceresi boyutu almak için çapraz tarayıcı çözüm var:

var browserWidth = $(window).width();
var browserHeight = $(window).height();

Bu Pencere boyutları Hack deneyebilir ve hem TÜM Tarayıcıları konuşuyor. (Dilsiz IE6 dahil)

var width = document.body.offsetWidth;
var bodyHeight = document.body.scrollHeight;
var height = (typeof window.innerHeight !== "undefined")? window.innerHeight :  (document.documentElement)? document.documentElement.clientHeight : document.body.clientHeight;
    height = (bodyHeight > height)? bodyHeight : height;

Peki konuyla ilgili yapılan tüm iş sonra benim cevap artıracak ..

Öncelikle çok çaba ile kazanılan bazı sonuçlar:

  1. [No cookies.. forget it] Don't do anything like setting session variables on serverside. Otherwise evrey time your page loads a new session file will be created on serverside (file is the usual handler for sessions) and the directory will pile up with files and you still wont be able to track the session.If you find a way, we all will be happy to hear it.

  2. [No cookies.. forget fancy scripts!] Without cookies you might have some success, like with the method of tracking ip etc, but still errors are there and there will be a circumstance where it will appear.

  3. [No cookies.. go for no cookies] If you can have your pages work without cookie go for it otherwise is not worth.

Ekran çözünürlüğü için aşağıda benim senaryom bu yapabilirsiniz:

  1. Hemen her 4 kombinasyonları çerez ve etkin js bilgi görüntüler.
  2. If the user makes a change enabling-disabling js or cookie these changes are identified immediately by the script.
  3. I used chrome plus and any change I did, in any combination was immediately identified. It worked even without deleting old cookies.

Bu sadece hata ayıklama için, ben bunun için kendini özgür ancak testi hatasız yapmak için çalıştık DBG () fonksiyonu içerir, benim senaryom!

<?PHP




class prereqCls
{

   //change this
  private $self="http://localhost/prereq.php";
  private $jsCookie="";

  function __construct()
  {     


    //entering conditions, an autosubmit bttn fetches the rest fields not it self 
    $enter=false;
    if(isset($_GET['rl']))$enter=true;
    if(!isset($_POST['js_alive']) and !isset($_POST['noJsBttn']))$enter=true;


    if($enter)
    {
      dbg("Now writing a php cookie..","construct");
      setcookie('cookie_alive',1,time()+3600);//set it for 1 hour 
      dbg("Now calling Js..","construct");
      $this->getSettings();
      return;
    }



    //identify setting
    $this->identifySett();


    //display the appropriate link  
    if($this->jsCookie!=="")
              echo "<a href=".$this->self."?rl=1 >If you enebled {$this->jsCookie}, don't refresh 
                but click here to load the new settings!</a>";
    else
              echo "<a href=".$this->self."?rl=1 >Click only this to relaod the page..</a>"; 

    //display the cookie if set
    if(isset($_COOKIE['cookie_alive']))
    {
      echo "<br><br>Well this is the cookie!<br>";
      print_r($_COOKIE);
    }


  }//method



  private function identifySett()
  {
        if(isset($_POST['js_alive']) and isset($_COOKIE['cookie_alive']))
      dbg("Both js and cookies are enabled!","construct");

    elseif(isset($_POST['js_alive']) and !isset($_COOKIE['cookie_alive']))
      {dbg("Js is enabled cookies not!","construct"); $this->jsCookie="Cookies";}

    elseif(!isset($_POST['js_alive']) and isset($_COOKIE['cookie_alive']))
      {dbg("Js is not enabled, cookie is!","construct");  $this->jsCookie="Javascript";}

    elseif(!isset($_POST['js_alive']) and !isset($_COOKIE['cookie_alive']))
      {dbg("Js and cookies are not enabled!","construct"); $this->jsCookie="Javascript and Cookies";}

  }


//php method begins
private function getSettings()
{
?>
<html>
<head>
<script type="text/javascript">

//the values entered to cookie by js will be seen by php immediately on reload!!! 
//write the screen data to the cookie too 
var exdays = 365; 
var exdate=new Date(); 
exdate.setDate(exdate.getDate() + exdays);

var c_value=escape(screen.width) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie="scr_width=" + c_value;

var c_value=escape(screen.height) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie="scr_height=" + c_value;


var c_value=escape(1) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie="js=" + c_value;

//autosubmit the form in milliseconds
window.setTimeout("document.getElementById('scrForm').submit();",0);


</script>


</head>

<body >

 <form id="scrForm" action="<?PHP echo $this->self;?>" method="post">   

<!--If Js is enabled the appropriate bttn will be shown-->
   <script type="text/javascript">
   document.write('<input type="hidden" name="js_alive" value="1">');
   document.write('<input type="submit" name="JsBttn" value="Go">');
   </script>

 <noscript>
 Some trouble trying to find screen settings.. Click to continue!
 <input type="submit" name="noJsBttn" value="Go">
 </noscript>

 </form>  

</body>
</html>

<?PHP

}
////////////////////php method ends

}/////////////class




//debuger
function dbg($str,$caller)
{ 

echo "<br> [{$str}][{$caller}]<br>";

$log="Log Begins:---".date('Y-M-d h:i:s')."--------[CALLER]{$caller}----------\n";

$log.= $str."\n";

$log.= "Log Ends:-------------------------------------------------------\n\n";

$fh=fopen("log_errors.log","a");
fwrite($fh, $log);
fclose($fh);
}
///////////////////// 




//make the class alive
$alive = new prereqCls();






?> 

Eğer ekranını tanımlamak sonra bu gibi bir görünüm için gidebilirsiniz:

Lütfen view.htm in (ne olursa olsun) dosyası gibi stil şunlardır:

   <link rel="stylesheet" href="style.php" />

sonra style.php bu gibi olabilir:

<?php
    header("Content-type: text/css");

    $width  = $_COOKIE['scr_width']; 
    $height = $_COOKIE['scr_height']; 

element 1 width is let's say 0.2 of width
element 2 width is let's say 0.7 of width
big container (it could be a single cell table) width=all other elements width
or
if image height is>image width then this variable will be ...
or
image path is random
or image path dynamic
or ... etc etc endless possibilities, you can do anything here in this css stylesheet.
?>

then [still on the same file, Yes css and php together!] for example apply the variables,
only simple variables work down here, keep calculations for above.



#smImgZoom
{
width:<?PHP echo $zoomerImgWidth."px;";?> 
height:<?PHP echo $zoomerImgHeight."px;";?> 
    padding:10px ;
}  

etc etc this is how I do it so html remain clear, css clear, calculations separated.

Sadece benim yolum, gerekli iyi değil!

hey ben, bu ilgili yararlı bir konu var olduğunu öğrendim

Difference between screen.availHeight and window.height