Popup funktioniert erst beim zweiten Klick, so wie es soll

dornfeder

Grünschnabel
Hallo,

ich habe eine kleine Javascript Funktion geschrieben, die ein Bild in einem Popup öffnen soll, das genauso groß ist wie das Bild, maximal aber 800 pixel hoch oder breit. Die Funktion sieht so aus:

HTML:
<script type="text/javascript">

function mypopup(datei) {
	bild = new Image();
	bild.src = datei;
	if (bild.width>800) {breite=800;}
	else { breite=bild.width;}
	if (bild.height>800) {hoehe=800;}
	else { hoehe=bild.height;}
	window.open(datei, "popup", "width=" + breite + ", height=" + hoehe + ", left=100, top=50, scrollbars=yes");
}

</script>

aufgerufen wird die Funktion so:

HTML:
<a href="bilder/bild.jpg" onclick="mypopup(this.href); return false;">
          <img src="bilder/bild__thumb.jpg" alt="Bild" />
</a>

Funktionieren tut das ganze auch d.h. das popup wird geöffnet, allerdings werden die größenangaben beim ersten Klick auf den Link nicht eingehalten. Im FF ist das Popup mehr als doppelt so breit wie es sein sollte. Schließe ich das Popup und klicke noch einmal auf den Link, öffnet sich das Popup, und diesmal in der richtigen Größe. Weiß jemand woran das liegen kann und wie ich diesen Fehler behebe?

Gruß
dornfeder
 
Hi,

eventuell liegt es daran, dass das Bild noch nicht fertig geladen ist und deshalb noch keine korrekten Werte
für width vorliegen. Möglich wäre ein Aufruf des PopUps erst dann, wenn ein width-Wert vorliegt.
Code:
var hTimer = null;

function mypopup(datei){
  var bild = new Image();
  bild.src = datei;
  openpopup(bild);
}

function openpopup(bild) {
  if(bild.width > 0){
    if (bild.width>800) {breite=800;}
    else { breite=bild.width;}
    if (bild.height>800) {hoehe=800;}
    else { hoehe=bild.height;}
    window.open(datei, "popup", "width=" + breite + ", height=" + hoehe + ", left=100, top=50, scrollbars=yes");
  }else{
    hTimer = window.setTimeout(function(){ openpopup(bild);}, 50);
  }
}
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Hi, danke für deinen Tipp, der hat zwar nicht geklappt, allerdings hab ich dadurch erkannt was ich in meinem Code falsch gemacht hab. ^^ Und zwar musste ich statt
HTML:
bild = new Image();
einfach
HTML:
var bild = new Image();
schreiben und schon funktioniert alles so wie es soll. :rolleyes:
 
Hallo habe gerade deinen skrip getestet...also mit "var bild" geht es bei mir auch erst nach dem zweiten mal in der richtigen größe auf.naja egal alle bilder bei mir sind gleich groß dann schreib ich eine größe rein. oder hast du noch eine andere Idee?
 

Neue Beiträge

Zurück