Zurück   Flashforum > Alternative Technologien > HTML und CSS

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-07-2010, 17:12   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
Javascript Fenster an Bild anpassen

Hallo,
Ich habe einen Banner, der zwölf Bilder mittels einer for Schleife in eine Flashdatei lädt. Beim Klick auf eines soll mittels getURL der Bildname an Javascript übergeben werden. Das funktioniert alles soweit. Das mit Javascript erzeugte Fenster soll sich jetzt dem Bild anpassen. Beim ersten Mal funktioniert es irgendwie nie. Wenn ich jedoch ein zweites Mal auf das Bild klicke, ermittelt Javascript die Bildgrösse korrekt und passt das Fenster auch an.
mein Javascript:
PHP-Code:
function pause(milliseconds) {
    var 
dt = new Date();
    while ((new 
Date()) - dt <= milliseconds) { /* Do nothing */ }
}

bildoeffnen = function(aurl){
    
ladebild = new Image;
    
ladebild.src aurl;
    
pause(100);
    
hoehe ladebild.height;
    
breite 300;
    
alert(hoehe); //das erste Mal immer 0. Danach 225 (richtige Grösse)
    
Bild window.open(aurl,'Bild'+aurl,'width='+breite+'px,height='+hoehe+'px,status=no,location=no,toolbar=no,scrollbars=no,resizable=no');

Ich kann sonst auch den Link posten (wenn das erlaubt ist...), wo das ganze zu finden ist oder die .fla anhängen.

Tim
timroh ist offline   Mit Zitat antworten
Alt 14-07-2010, 19:51   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 2.738
der Fehler rührt daher, dass zum Zeitpunkt wo hoehe = ladebild.height; ausgeführt wird, das Bild noch nicht geladen ist, und somit auch noch keine Breite hat.


-deine pause-Funktion ist denkbar ungünstig, sie lastet JS/den Browser komplett aus.
im schlimmsten Fall stürzt der Browser sogar ab.

- ich meine nicht dass Image in allgemein verbreitet ist.

- du solltest dich dringend mit dem Geltungsbereich von Variablen in JS auseinandersetzen. du hast ALLE variablen global erzeugt.

hier mal eine überarbeitet Version des Codes:
PHP-Code:
bildoeffnen = function(aurl){
    var 
ladebild document.createElement('img');
        
ladebild.src aurl;

    var 
interval 100;
    var 
countdown 5000;
    
    function 
wait(){
        if(
ladebild.width>|| ladebild.height>0){
            var 
breite 300;
            var 
hoehe ladebild.height;
        
            
window.open(
                
aurl,
                
'Bild'aurl
                
'width='breite +'px, height='hoehe +'px, status=no, location=no, toolbar=no, scrollbars=no, resizable=no'
            
);
            
        }else if(
countdown 0){
            
countdown -= interval;
            
window.setTimeout(waitinterval);

        }else{
            
alert("Timeout bei: \n"aurl);

        }
    }
    
    
wait();

die Funktion wait ruft sich selbst immer wieder auf, bis eine breite/hoehe verfügbar ist oder die angegebene Wartezeit überschritten wurde.

ich hab hierzu noch zwei Variablen definiert.
interval gibt den Interval in ms an, in dem die Grösse des Bildes überprüft werden soll.
countdown gibt die Gesamtzeit in ms an, die wait maximal ausgeführt werden soll, bevor das ganze abgebrochen wird.


alternativ könntest du das Bild per AJAX vorladen, da hast du dann ein quasi-COMPLETE-event.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 14-07-2010, 22:20   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
Das Skript funktioniert irgendwie noch nicht so ganz. Jetzt passiert beim ersten Klick gar nichts mehr, dafür geht das Fenster beim Zweiten direkt richtig auf.
timroh ist offline   Mit Zitat antworten
Alt 14-07-2010, 22:21   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
...Und meine Pause diente lediglich dazu, dass das Bild laden konnte (hat sich wohl als falsch erwiesen.
timroh ist offline   Mit Zitat antworten
Alt 14-07-2010, 22:33   #5 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 2.738
dann zeig mal den Rest deines Codes.
verlink die Seite.

weil bei mir funzt das JS einwandfrei.

__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 15-07-2010, 07:16   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,
mal halt hier!
Ihr macht das viel zu kompliziert mit euren warten. Wenn warten dann mit closures.

Code:
bildoeffnen = function(aurl){
	ladebild = new Image;
	ladebild.src = aurl;
	window.setTimeout(function() {
		hoehe = ladebild.height;
		breite = 300;
		alert(hoehe); //das erste Mal immer 0. Danach 225 (richtige Grösse)
		Bild = window.open(aurl,'Bild'+aurl,'width='+breite+'px,height='+hoehe+'px,status=no,location=no,toolbar=no,scrollbars=no,resizable=no');
	 }, 100);   
}
Aber dies ist natürlich auch nicht die Lösung wenn man mit Bilder arbeitet.
Da sollte man das event onload benutzten.

Code:
bildoeffnen = function(aurl){
	ladebild = new Image;
	ladebild.onload = function() {
		hoehe = ladebild.height;
		breite = 300;
		alert(hoehe); //das erste Mal immer 0. Danach 225 (richtige Grösse)
		Bild = window.open(aurl,'Bild'+aurl,'width='+breite+'px,height='+hoehe+'px,status=no,location=no,toolbar=no,scrollbars=no,resizable=no');
	}
	ladebild.src = aurl;
}
CaselPasel ist offline   Mit Zitat antworten
Alt 15-07-2010, 11:06   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
@CaselPasel bei deinem zweiten Script wird jetzt die Höhe jedes mal korrekt ausgegeben, es öffnet sich aber kein neues Fenster.
timroh ist offline   Mit Zitat antworten
Alt 15-07-2010, 11:53   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,
lass dir mal aurl ausgeben.
Es kann ja nur noch an open liegen.

Oda hast du einen Popup blocker an??

Mit freundlichen Grüßen

Cas
CaselPasel ist offline   Mit Zitat antworten
Alt 15-07-2010, 11:58   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
aurl gibt mir jedes Mal den richtigen Pfad aus: 300px/bilder/bild_5.jpg
timroh ist offline   Mit Zitat antworten
Alt 15-07-2010, 12:00   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,
nimm mal für window.open einen absoluten pfad sprich mit url.

Mit freundlichen Grüßen

Cas
CaselPasel ist offline   Mit Zitat antworten
Alt 15-07-2010, 12:05   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 57
geht auch nicht
timroh ist offline   Mit Zitat antworten
Alt 15-07-2010, 12:07   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,
SELFHTML: JavaScript / Objektreferenz / window

schau es dir genau an. Die Höhe und Breite gibt man nicht mit PX an.
Kontrolliere bitte alles. Dann müsste es funktionieren.

Mit freundlichen Grüßen

Cas
CaselPasel ist offline   Mit Zitat antworten
Alt 12-08-2010, 15:13   #13 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 1
abusoluten pfad

window.open einen absoluten pfad sprich mit url. Das ist richtig
adulti ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
fenster anpassen + meldung aphratec Flash Einsteiger 2 23-03-2006 14:23
Javascript: JS-Menü anpassen? Elli HTML und CSS 1 27-08-2003 18:15
Fenster anpassen casiohec Flash 4 und Flash 5 4 10-08-2002 23:20
Fenster an Flash anpassen qNETIC Flash MX 2 15-05-2002 20:53
fenster mit bewegung anpassen? A.Hoffmann HTML und CSS 4 27-04-2002 23:43


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele