Automatische Bildergröße

Hallo!

Damit sich ein PopUp automatisch der Größe des zu öffnenden Bildes anpasst, verwende ich folgendes Script:

function IMG(img){
 bild= new Image();
 bild.src=(img);
 viewIMG(img);
}

function viewIMG(img){
 rrand=bild.width;
 urand=bild.height;
 maase="width="+rrand+",height="+urand;
 win=window.open("","bild",maase);
win.document.write("");
//win.document.write(img);
}

Die einzelnen Bilder habe ich jeweils so verlinkt:

[Bild zeigen](javascript:IMG('bild.jpg'))

Ich möchte, dass sich ein PopUp ohne Rand öffnet. Das klappt auch ganz gut … nur leider nicht immer. In willkürlichen Abständen öffnet sich kein PopUp in der von mir gewünschten Größe, sondern ein viel größeres.

Hab ich irgendetwas im Script übersehen?

Danke, Matthias

Hallo!

Damit sich ein PopUp automatisch der Größe des zu öffnenden
Bildes anpasst, verwende ich folgendes Script:

function IMG(img){
bild= new Image();
bild.src=(img);
viewIMG(img);
}

function viewIMG(img){
rrand=bild.width;
urand=bild.height;
maase=„width=“+rrand+",height="+urand;
win=window.open("",„bild“,maase);
win.document.write("");
//win.document.write(img);
}

Die einzelnen Bilder habe ich jeweils so verlinkt:

[Bild
zeigen](javascript:IMG(‚bild.jpg‘))

dein call-stack saehe so aus:

IMG('bild.jpg')
 bild= new Image();
 bild.src=(img);
 viewIMG(img);
 rrand=bild.width;
 urand=bild.height;

an der stelle, wo du bild.width und bild.height abfragst muss bild noch cniht unbedingt geladen sein, dann kriegst du nur quatsch fuer die beiden werte raus.

deine funktion viewimg mueste also in etwa so aussehen:

var vtmr = false;
function viewIMG(img){
 clearTimeout(vtmr);
 if ( bild.complete!==true)
 { vtmr = setTimeout('viewImg()',100); return; }

 ...
}

damit ist sichergestellt, dass du nur auf ein geladenes bild deine abfrage anwendest. muesstest du nur noch dir fuer das argument noch was einfallen lassen, und in IMG noch mal den cleartimeout reinhauen, damit es keine ueberschneidungen gibt.

Hallo!

Danke für die schnelle Antwort!

an der stelle, wo du bild.width und bild.height abfragst muss
bild noch cniht unbedingt geladen sein, dann kriegst du nur
quatsch fuer die beiden werte raus.

Ach daran liegt es, dass die Bilder beim ersten Anklicken in riesigen Fenstern öffnen (etwa 800x600) und beim zweiten (wenn sie dann schon im Cache liegen) in der richtigen Größe (500x375). Das hat mich nämlich schon gewundert.

muesstest du nur noch dir fuer das
argument noch was einfallen lassen, und in IMG noch mal den
cleartimeout reinhauen, damit es keine ueberschneidungen gibt.

Das ist leichter gesagt als getan. :smile: Ich hab von JavaScript leider kaum Ahnung, hab das obere Script auch bloß von einer Freescript-Site kopiert. Wäre es möglich, dass du mir noch einmal weiterhilfst, also das Script komplett korrigierst?

BESTEN DANK EINSTWEILEN! Matthias