Verwendung von PHP Variablen in JavaScript

Flo<H>

Erfahrenes Mitglied
Hallo!
Also folgendes Problem: Ich scripte gerade mit php eine Bildergallerie. Diese Gallerie zeigt zu jedem Bild ein Thumbnail an und bei Klick darauf öffnet sich per window-open ein neues Fenster. Dieses Fenster öffne ich standardmäßig mit einer Größe von 200 * 200 Pixel. Soweit funktioniert alles wunderbar, auch wenn ich für den javaScript-Teil ein bißchen gebraucht habe. Nun will ich aber das PopUp-Fenster an das darzustellende Bild anpassen (Das Fenster soll so groß sein, wie das Bild und eine kleine Tabelle darunter):
Code:
+-----------------------+
|                       |
|        Bild           |
|                       |
+-----------------------+
|       Tabelle         |
+-----------------------+
Also hab ich mit php die Größe des Bildes ausgelesen und die Größe der Tabelle dazugerechnet und mit onLoad = "window.resizeTo..." der Größe angepasst. Soweit funktioniert immer noch alles nach einigem rumprobieren. Nun hab ich aber ein neues Problem und zwar, dass es vorkommen kann, dass ein Bild größer ist als der Bildschirm und somit die Ränder des Fensters außerhalb des Bildschirms wären. Also hatte ich vor mit Hilfe von JavaScript zu überprüfen, wie groß ein Fenster maximal sein darf (screen.availWidth / screen.availHeight). Ist das Fenster zu groß, automatisch eine kleinere Größe wählen und einen Scrollbalken einfügen, ist das Fenster nicht zu groß, die Größe von dem Bild plus die Größe von der Tabelle verwenden.
Um hier weiß ich nicht mehr weiter.
Mein Code bis jetzt:
PHP:
<script type="text/javascript">
<!--
<?php
printf("breite = %s;\n", strtr(addslashes($breite), array("\r" => '\r', "\n" => '\n')));
printf("hoehe = %s;\n", strtr(addslashes($hoehe), array("\r" => '\r', "\n" => '\n')));
printf("hoehegesamt = %s;\n", strtr(addslashes($hoehegesamt), array("\r" => '\r', "\n" => '\n')));
?>
function maximize() {
window.moveTo(0,0);
if(breite >= screen.availWidth)
{
   windowwidth = screen.availWidth - 100;
}
else
{
   windowwidth = breitegesamt;
}
if(hoehegesamt >= screen.availHeight)
{
   windowheight = screen.availHeight - 100;
}
else
{
   windowheight = hoehegesamt;
}
window.resizeTo(windowwidth,windowheight);
}
//-->
</script>
Ich hoffe man versteht ungefähr wie das ganze funktionieren soll. Ich habe gelesen, dass ich die PHP-Variablen mit printf in dem JavaScript Teil ausgeben muss um mit JavaScript darauf zugreifen zu können.
Anschließend soll die if-Anweisung überprüfen, ob das Fenster zu groß ist.
Leider funktioniert das ganze nicht, das Fenster ändert seine Größe gar nicht.
Ach ja ich rufe die Funktion maximize() im body Tag per onLoad auf.
 
Hi,

Das Problem: Nachträgliches ändern von Fenstern funktioniert nicht :( - eine andere Idee: auf der Page mit den Thumbnails lässt du dir die Maße der Bilder ausrechnen/ausgeben. Dann rufst du die neuen Fenster gleich mit der richtigen Größe auf... ungefähr in der art:
PHP:
<script type="text/javascript">
function popupimage(höhe, breite, höhe2, breite2)
{
   höhe = höhe + xxx // xxx = tabellenhöhe 
   if((breite < screen.availWidth) && (höhe < screen.availHeight))
   {
      window.open("seitexxx", "Bla", "height=höhe, width=breite")
   }
   else
   {
      window.open("seiteyyy", "bla", "height=höhe2, width=breite2")
      // höhe2/breite2 = höhe/breite des alternativen Bildes
   }
}
</script>
...
...
...
<img src="<? echo "$bild[x]";?>" onClick="popupimage(<? echo "'$breite','$höhe','$höhe2','$breite2'";?>)">
der Code ist jetzt bestimmt nicht ganz fehlerfrei, sollte aber im Prinzip funktionieren. Wenn du dich mit der Idee anfreunen kannst und noch fragen hast (besonders zum Window.open), einfach posten :)

ciao
 
Erstmal Dankeschön!
Das Problem: Nachträgliches ändern von Fenstern funktioniert nicht
???
mit onLoad = "window.resizeTo.." funktioniert das bei mir wunderbar, oder hab ich dich da jetzt falsch verstanden?

Hab das ganze jetzt zwar schon anders gelöst, aber so gefällt mir das Ganze doch besser.

Muss mir das mal anschauen wie ich das bei mir einbaue.
 
Mit window.resizeTo veränderst du ja auch nicht die Frames sonder die Fenstergröße. Dass sich dabei die Framegrößen verändern ist ja mehr oder weniger klar. Aber ein direktes eingreifen in die Frames ist damit nachträglich immer noch nicht möglich, wie crono ja schon gesagt hat.
 
Hm irgendwie hab ich das Gefühl, dass wir nicht von dem selben Problem reden. Mir geht es darum, dass ich die Werte der Breite und Höhe die ich in PHP-Variablen gespeichert habe mit den JavaScript-Werten screen.availWidth und screen.availHeight vergleiche und davon abhängig die Fenstergröße verändere.
BTW: Ich verwende in dem PopUp-Fenster gar keine Frames. Ich denke aber dass ich jetzt weiß wie ich es mache, die grundlegenden Probleme die ich hatte, haben sich mit diesem Thread gelöst. Dankeschön.

EDIT
Vielleicht interessiert es ja jemanden wie ich es jetzt gelöst habe: Ich habe per JS ein kleines Fenster geöffnet, dass eine Datei enthält, das die Werte des Fotos ausliest, die Größen des Fensters berechnet und anschließend das Fenster auf die richtige Größe bringt.
 
Zuletzt bearbeitet:
Zurück