2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
905
905
EMPFEHLEN
-
18.11.11 18:30 #1
- Registriert seit
- Mar 2006
- Beiträge
- 217
Hallo zusammen,
ich möchte ein Bild mittels click-event in jQuery nachladen:
und die Bildmaße ermitteln:Code :1 2
[...] click( [...] $('#bildBox').html('<img src="testbild.jpg" id="bild">'+$('#bildBox').html());
Komischerweise liefert mir Firefox ZWEI anstelle von EINER Alert-Meldungen. Die Erste mit 24 und die Zweite mit dem richtigen Wert. Safari liefert mir zwei mal 0. Ich habe gelesen, dass es bei Safari und Chrome an der anderen Script-Abarbeitung liegt. Parallelisierung war hier ein Stichwort.Code :1
alert($('#bild').width());
Leider hat html() keine callback-Funktion, da sie >angeblich< synchron arbeitet. Scheinbar stimmt das in diesem Fall aber nicht, sonst gäbe es nicht dieses Problem. (nebenbei gesagt, ich nutze die aktuellste jQuery-Version)
Weiß jemand Rat, wie ich das Problem beheben kann? Ich habe es schon mit ready() und einer onload-Anweisung im img-Tag probiert, leider alles ohne Erfolg.Geändert von Sturmrider (18.11.11 um 18:47 Uhr)
Gruß Sturmi
-
18.11.11 19:09 #2
Hallo Sturmrider,
folgendes funktioniert bei mir problemlos:
Genau so funktioniert es, wenn ich newImg mit document.createElement("img"); initialisiere.Code javascript:1 2 3 4 5 6 7 8 9 10 11 12 13
/* #the_div ist ein DIV, der das Bild beinhalten soll */ $("#the_div").html(""); var newImg = new Image; newImg.src = imgSrc; newImg.alt = 'Bild'; newImg.onload = function() { alert($(this).width()); } $("#the_div")[0].appendChild(newImg);
Siehe auch meinen Vergleich von jQuery.html(), new Image; und createElement(): http://jsfiddle.net/qN7T5/1/mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
18.11.11 20:27 #3
- Registriert seit
- Mar 2006
- Beiträge
- 217
Ich glaube das funktioniert soweit. Leider habe ich selbst nicht daran gedacht, das Bild einfach in ein Objekt zu packen und so vor zu laden. Ich hing zu sehr an .html() fest, was damit ja geschickt umgangen wurde.
Eine Frage habe ich aber noch: Mein #the_div ist nicht leer und das Bild wird am Anfang des contents erwartet. Wie setze ich newImg an den Anfang und nicht wie zur Zeit, ans Ende? Ich kenne mich mit appendChild und Co. ehrlich gesagt nicht so gut aus.Gruß Sturmi
-
18.11.11 21:14 #4
Dafür ist die Methode insertBefore zuständig:
Der erste Parameter ist das neue Element,Code javascript:1 2 3 4 5 6 7
function insertAtBegin(newElem, parent) { var children = obj.childNodes; if ( children.length > 0 ) parent.insertBefore( newElem, children[0] ); } insertAtBegin( img, $("#the_div")[0] );
der zweite Parameter ist das Referenzelement, in unserem Fall das erste Kindelement.mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Alternativ: Du könntest das erste Element mit firstChild ermitteln und das Bild dann mit insertBefore davorpacken.
Mich wundert aber ehrlich gesagt, dass dein erster Ansatz nicht funktioniert hat. Hattest du es mal mit dem live-Event probiert?Für die Übereinstimmung von Niederschrift und Hirninhalt.
-
18.11.11 23:10 #6
- Registriert seit
- Mar 2006
- Beiträge
- 217
@ComFreek
Deine Funktion funktioniert bei mir irgendwie nicht. Ich habe es aber ähnlich gemacht - so wie para_noid vorgeschlagen hat.
Code :1
$('#the_div')[0].insertBefore(newImg, $('#the_div')[0].firstChild);
Vielen Dank euch beiden. Damit ist mein das Rätsel wohl gelöst.
@para_noid
Mich wundert es ehrlich gesagt auch... da in der Doku zu html() eindeutig steht, dass es synchron läuft, was meines Wissens nach heißt, dass andere Programmabschnitte erst bearbeitet werden, wenn der HTML-Teil aus html() vollständig geladen ist. Aber sei es drum
Bei WebKit-Browsern (das war der Begriff, auf den ich im Zusammenhang mit Chrome und Safari nicht gekommen bin) hätte es wahrscheinlich eh nicht richtig geklappt. Die machen beim dynamischen Nachladen eh manchmal so ihre Probleme :P
EDIT: Achja, noch ein schönes Wochenende
Gruß Sturmi
-
Das wird auch so sein, und wahrscheinlich ist das img-Tag auch bereits da, wenn das alert losgeht. Die Frage ist aber, ob das Bild in der Zeit wirklich im Browser geladen wurde und nun "messbar" ist. Ich schätze, wenn du an der Stelle attr('id') ausgeben würdest, wäre das Ergebnis positiv, weil das Attribut auslesbar ist sobald das Element existiert..da in der Doku zu html() eindeutig steht, dass es synchron läuft, was meines Wissens nach heißt, dass andere Programmabschnitte erst bearbeitet werden, wenn der HTML-Teil aus html() vollständig geladen ist
Hab grad gesehen dass es mit Safari & Co. nur mit width als Attribut funktioniert
[http://api.jquery.com/width/#dsq-comment-message-8331]The width has to be specified in the image code for Chrome/Safari to be able to correctly detect the width. If the image code looks like this:
<img src=”my_super_cool_image.png”>
Firefox and IE will correctly detect the width but Chrome and Safari will return a 0. When you add width=”XXX” then Chrome/Safari will return the XXX value.
Schon blöd wenn eigentlich so hilfreiche Werkzeuge/Bibliotheken bei eher simplen Problemen nicht helfen
dir auch n schönes Wochenende
Für die Übereinstimmung von Niederschrift und Hirninhalt.
Ähnliche Themen
-
jQuery Lib dynamisch nachladen (FireFox 3.5.7)
Von KICK im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 26.07.11, 19:03 -
Bild in Bilderrahmen (Größe ermitteln)
Von Alice im Forum PHPAntworten: 2Letzter Beitrag: 10.05.11, 14:54 -
Nachladen von iFrame ohne jQuery, etc-.
Von QUEST08 im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 18.04.11, 11:19 -
JQuery Sortable Seite nachladen
Von iLu_is_a_loser im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 30.08.10, 20:37 -
Verzeichnis auslesen. Ordner anzeigen, dessen Größe und Anzahl an Dateien!
Von anearlycascade im Forum PHPAntworten: 4Letzter Beitrag: 14.02.05, 12:34





Zitieren

Login





