Da es mich auch genervt hat, dass man auf Serverseite (im PHP Code) nicht direkt an die Größe des Browserfensters herankommt, habe ich mir selbst die Mühe gemacht, eine Lösung – möglichst einfach – hinzubekommen… und es ist mir über Javascript/Ajax gelungen
Die Lösung möchte ich natürlich niemanden vorenthalten, daher hier mein Ansatz:
Es gibt nur wenige Vorbedingungen:
– PHP-Sessions müssen aktiviert sein
– der Client muss Javascript aktiviert haben (was zu über 98% eigentlich immer zutrifft…)
Man legt eine server.php mit folgendem Code an:
<?php
// transfer client browser width to server (php)
// by mantronic 2010 (steffen beck, steffen@mantronic-software.de)
session_start();
if(isset($_REQUEST[width])){
$_SESSION[width]=intval($_REQUEST[width]);
}
?>
und eine browser.php, die der Client aufruft:
<?php
session_start();
if($_SESSION[width]==null){
echo 'Die Fenstergröße (Breite vom Browser) wird zum Server übertragen und ist gerade noch: '.intval($_SESSION[width]).'<br/>';
?>
<script language="text/javascript">
<!--
var XMLHTTP=null;if(window.XMLHttpRequest){XMLHTTP=new XMLHttpRequest();}else if(window.ActiveXObject){try{XMLHTTP=new ActiveXObject("Msxml2.XMLHTTP");}catch(ex){try {XMLHTTP=new ActiveXObject("Microsoft.XMLHTTP");}catch(ex){}}};function sendWidthToPhp(){var width=(window.innerWidth==undefined)?window.document.documentElement.clientWidth:window.innerWidth;XMLHTTP.open("POST","server.php?width=" + width);XMLHTTP.send(null);};window.onload=sendWidthToPhp;
-->
</script>
<?php
echo '<br/>Bitte die Seite neu laden (F5 drücken)';
}else{
echo 'Die Browserfenstergröße ist nun beim Server in der Session gespeichert: '.intval($_SESSION[width]).'<br/>';
echo 'by <a href="http://mantronic-software.de">mantronic</a>'
}
?>
Fertig