Zur Navigation

PHP-Seite abhängig von Bildschirmbreite/höhe aufbauen

1 lava

Hallo, ich möchte gerne eine PHP-Seite abhängig von der jeweiligen Fenstereinstellung generieren. Ich nehme an, die Fenstereinstellung kriege ich nur mit Javascript raus, denn das ist ja eine clientseitige Sache + da gibt es ja für die verschiedenen Browser die diversen Kommandos. Wenn ich nun beispielsweise einfach sowas Banales wie

<?PHP echo "Ihr Fenster ist gerade ".$x." Pixel breit und ".$y." Pixel hoch"; ?> ausgeben möchte, wie kann ich dann die Javascript-Ergebnisse meinen $x und $y - Variablen übergeben? Und hab ich dann nicht das Problem, daß sich die Werte nicht anpassen, wenn der Benutzer die Seite größer/kleiner zieht, sondern erst beim Reload - d.h. ich müßte erzwingen, daß immer erkannt wird, ob gerade eine Bildschirmgrößenänderung stattfindet und wann sie aufhört und dann neu laden, also bräuchte einen Befehl wie "onmouseover" nur mit "onbildschirmgrößenänderung", gibt es da etwas?

12.09.2008 19:47

2 Jörg Kruse

Hallo lava,

in JavaScript kannst du hier auf die Eigenschaften innerHeight und innerWidth zugreifen. Der Internet Explorer verwendet allerdings andere Eigenschaften, siehe hierzu die Erklärungen auf SELFHTML:

http://de.selfhtml.org/javascript/objekte/window.htm#inner_height

Ein geeignetes Script hattest du schon mal in einem anderen Thread gepostet:

https://joergs-forum.de/frames-durch-tabellen-ersetzen-t-1653-1#p4

Und hab ich dann nicht das Problem, daß sich die Werte nicht anpassen, wenn der Benutzer die Seite größer/kleiner zieht, sondern erst beim Reload - d.h. ich müßte erzwingen, daß immer erkannt wird, ob gerade eine Bildschirmgrößenänderung stattfindet und wann sie aufhört und dann neu laden, also bräuchte einen Befehl wie "onmouseover" nur mit "onbildschirmgrößenänderung", gibt es da etwas?

Dazu habe ich diese Seite gefunden:

Änderungen der Fenstergröße überwachen

12.09.2008 20:04 | geändert: 12.09.2008 20:15

3 lava

Zitat von Jörg


in JavaScript kannst du hier auf die Eigenschaften innerHeight und innerWidth zugreifen. Der Internet Explorer verwendet allerdings andere Eigenschaften, siehe hierzu die Erklärungen auf SELFHTML:


Ein geeignetes Script hattest du schon mal in einem anderen Thread gepostet:

https://joergs-forum.de/frames-durch-tabellen-ersetzen-t-1653-1#p4


Das wußte ich noch, die neue Frage war offenbar nicht deutlich genug gestellt: wie übergebe ich diese Javascript-Werte dann an meine PHP-Variablen???

12.09.2008 20:17 | geändert: 12.09.2008 22:51

4 Jörg Kruse

Dazu musst du die Seite neu laden und dabei die Variablen einfach an die URL hängen, z.B.:

window.location.href = 'http://example.com/script.php?width=' + width + '&height=' + height;

Beim folgenden Aufruf kann das PHP-Script diese Variablen auswerten

$width = $_GET['width'];

... oder du überträgst die Variablen mittels Ajax...

12.09.2008 20:27 | geändert: 12.09.2008 20:31

5 lava

Kann ich mir eigentlich eine Java-Script-Variable (z.B. das Return-Ergebnis eines Funktionsaufrufes) auch direkt im HTML ausgeben lassen, so wie ich es bei PHP mit dem echo-Befehl tun kann?

12.09.2008 22:12

6 Jörg Kruse

Ja klar, du definierst im HTML-Code einen Bereich, wo du das Ergebnis anzeigen möchtest, z.B.:

<p id="hoehe"></p>

Und so wird dieser Bereich im Script ausgefüllt:

document.getElementById('hoehe').innerHTML = 'Höhe: ' + height + 'px';

12.09.2008 22:19

7 lava

Das ist schön, so funktioniert es :)

Sieht dann so aus (mit Ausgabe via Javascript)
<title>Erkennen der eigenen Größe</title>
<script language="javascript" type="text/javascript">

function get_width(){
x=0;
if (self.innerHeight)  x=self.innerWidth;
else if (document.documentElement && document.documentElement.clientHeight) x=document.documentElement.clientWidth; else if (document.body) x=document.body.clientWidth;

document.getElementById('welchebreite').innerHTML = x;

}


</script>
</head>

<body onload="javascript:get_width()" onresize="javascript:get_width()">


Dieses Fenster hat die Breite <div id="welchebreite"></div>.

</body>

bzw. auch so (mit Ausgabe via PHP)

<script language="javascript" type="text/javascript">

function get_width(){
x=0;
if (self.innerHeight)  x=self.innerWidth;
else if (document.documentElement && document.documentElement.clientHeight) x=document.documentElement.clientWidth; else if (document.body) x=document.body.clientWidth;

//document.getElementById('welchebreite').innerHTML = x;
window.location.href="test.php?x="+x;
}

function hallo(){alert("Hallo"); }

</script>
</head>

<body onresize="javascript:get_width()" 
onload="<?PHP if (empty($_GET['x']))   
{echo "javascript:get_width()";} ?>" >




Dieses Fenster hat die Breite  <?PHP echo $_GET['x']; ?>




</body>

12.09.2008 22:51 | geändert: 13.09.2008 01:04

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]