ResizeTo liefert flasche Werte? (JS+PHP)
Simon
- javascript
Hallo!
Ich habe folgende HTML, die als PopUp aufgerufen wird. In ihm werden dann immer unterschiedliche Bilder mit unterschiedlichen Größen dargestellt. Die Ermittlung der Größe übernimmt PHP und schreibt sie als Variablen in die Javascript Funktion.
Mein Problem, Javascript macht zwar ein Resize des Fensters - aber es fehlen immer einige Pixel gegenüber dem Bild - so dass nie das komplette Bild dargestellt wird.
Woran liegt es?!? Danke schon mal für die Hilfe ...
Hier die Datei: -->
<?PHP
# Variablen holen
@$bild = $_GET['bild'];
@$size = GetImageSize ("$bild");
#checken, ob auch wirklich eins von meinen Bildern übergeben wird
@$bild_chk = STRPOS($bild,"bilder/",0);
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
body{
padding: 0px;
margin: 0px;
overflow: hidden;
}
</style>
<script>
window.innerWidth = <?PHP echo $size[0];?>;
window.innerHeight = <?PHP echo $size[1];?>;
window.resizeTo (<?PHP echo $size[0];?>,<?PHP echo $size[1];?>);
</script>
</head>
<body>
<?PHP
#Bild ausgeben mit dem oben ermittelten Daten
if ($bild_chk === 0)
{
echo '<img src="'.$bild.'" '.$size[3].' alt="Galeriebild" border="0">';
}
else
{
echo '<strong>ACHTUNG:</strong> Sie versuchen, ein fremdes<br> Bild einzubinden - das erlaube ich nicht !!';
}
?>
</body>
</html>
Hier der aufruf per Link: -->
<a href="html/bilder/bild.gif" target="_blank" onclick="window.open('html/popup.php?bild=bilder/uhr.gif','Bild','dependent=yes,personalbar=no,toolbar=no,status=no,menubar=no,resizable=yes,scrollbars=yes,left=150,top=50,width=100,height=100').focus(); return false">Bild</a>
Mein Problem, Javascript macht zwar ein Resize des Fensters - aber es fehlen immer einige Pixel gegenüber dem Bild - so dass nie das komplette Bild dargestellt wird.
Normal.
Du wirst auch in jedem Browser ein anderes Verhalten festellen die einzige Lösung ist das Fenster ca. 10 pixel größer als das Bild zu machen.
Struppi.
hi sruppi!
danke ... dass ist aber völlig sinnlos, warum gibt es diese funtkion,wenn sie keine 10%igen ergebnisse liefert. wenn ich sage 640x480 und dann sind es nur 630x470 oder so ...
gibt es noch eine andere methode ein fenster nach dem aufruf zu resizen?
simon
danke ... dass ist aber völlig sinnlos, warum gibt es diese funtkion,wenn sie keine 10%igen ergebnisse liefert. wenn ich sage 640x480 und dann sind es nur 630x470 oder so ...
das Problem sind die Fensterelemente (titel, platz für scrollbalken), die einen Zählen es dazu die anderen nur Teilweise
gibt es noch eine andere methode ein fenster nach dem aufruf zu resizen?
Wie gesagt du kannst nur näherungwerte definieren.
Ich hatte auf meiner Seite es mal versucht rauszufinden, wie gross die Fenster sind, http://home.arcor.de/struebig/js/popup/index.htm bin aber nie zu einem brauchbaren Ergebniss gekommen, das Problem zu lösen.
Struppi.
hi!
ich habe mittlerweile auch was gefunden:
<script>
DifferHeight = window.outerHeight - window.innerHeight;
DifferWidth = window.outerWidth - window.innerWidth;
window.resizeTo (<?PHP echo $size[0];?>+DifferWidth,<?PHP echo $size[1];?>+DifferHeight);
</script>
Das funktioniert in Opera, für Fireball muss man die Seite reloaden lassen. -> Wie mache ich das nur 1x Mal? Mit <body onload="location.reload()"> spinnt Fireball ... ???
Und den IE juckt es nicht, weil der die Variablen nicht versteht (outerHeight etc.)
Ist doch alles MIST!!
Simon