Breite eines Bildes auslesen
Tina
- javascript
0 Beat0 Gunnar Bittersmann0 Tina0 Gunnar Bittersmann0 Tina
0 Struppi
Hallo zusammen,
wie kann ich für den IE6 die Breite eines Bildes per JavaScript auslesen?
Ich habe folgenden HTML Code:
<img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
Per JavaScript habe ich bereits folgendes probiert:
var aWidth = document.n_img_4711_1.width
var aWidth = document.getElementById('img_4711_1').width
Leider liefern mir beide Alternativen den Wert "0" zurück.
Ich habe bei Generierung des HTML Codes leider keine Möglichkeit die Attribute "width" und "height" für das Bild zu füllen.
Danke im Voraus
Grüße
Tina
Hallo zusammen,
wie kann ich für den IE6 die Breite eines Bildes per JavaScript auslesen?
Ich habe folgenden HTML Code:
<img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
name ist nicht erlaubt in <img>
Verwende id.
Ein leeres alt Attribut braucht besondere Gründe.
Per JavaScript habe ich bereits folgendes probiert:
var aWidth = document.n_img_4711_1.width
du versuchst ein width Attribut auszulesen, das nicht existiert.
var aWidth = document.getElementById('img_4711_1').width
dazu muss dein Element ein id Attribut aufweisen. Aber ein width Attribut ist immer noch nicht vorhanden.
Leider liefern mir beide Alternativen den Wert "0" zurück.
Ich habe bei Generierung des HTML Codes leider keine Möglichkeit die Attribute "width" und "height" für das Bild zu füllen.
Du möchtest nicht das width Attribut auslesen, sondern die Darstellungsgrösse ermitteln.
Die Methoden heissen.
clientWidth und clientHeight
mfg Beat
@@Beat:
nuqneH
<img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
var aWidth = document.n_img_4711_1.width
du versuchst ein width Attribut auszulesen, das nicht existiert.
Nein. Er liest die width
-Eigenschaft des Objektes document.n_img_4711_1
aus, das offensichtlich existiert. (Dennoch ist diese Variante wohl nicht empfehlenswert.)
var aWidth = document.getElementById('img_4711_1').width
dazu muss dein Element ein id Attribut aufweisen.
Hat’s ja.
Aber ein width Attribut ist immer noch nicht vorhanden.
Dafür aber ein Deppenleerzeichen. ;-) Ansonsten siehe oben.
Du möchtest nicht das width Attribut auslesen
Stimmt. ;-)
sondern die Darstellungsgrösse ermitteln.
Die Methoden heissen.
clientWidth und clientHeight
Was das Problem nicht löst, da es woanders liegt.
Qapla'
im IE funktioniert bei mir seit langem:
<div id="prediv" style="visibility:hidden;">
<img id="prebild" src="">
</div>
<script>
prebild.src = "img/exampleImage01.jpg";
...
if (document.images.prebild.complete == true) {
window.status = 'Bild geladen (' + document.images.prebild.complete+')';
h1 = document.images.prebild.clientHeight;
b1 = document.images.prebild.clientWidth;
}
..
</script>
Die Abfrage muss evtl. mehrfach erfolgen, wenn das Bild nnoch nicht geladen ist. Wenn es das Bild nicht gibt, wird complete nie true !!!
@@Beat:
nuqneH
<img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
var aWidth = document.n_img_4711_1.width
du versuchst ein width Attribut auszulesen, das nicht existiert.
Nein. Er liest die
width
-Eigenschaft des Objektesdocument.n_img_4711_1
aus, das offensichtlich existiert. (Dennoch ist diese Variante wohl nicht empfehlenswert.)
var aWidth = document.getElementById('img_4711_1').width
dazu muss dein Element ein id Attribut aufweisen.Hat’s ja.
Aber ein width Attribut ist immer noch nicht vorhanden.
Dafür aber ein Deppenleerzeichen. ;-) Ansonsten siehe oben.
Du möchtest nicht das width Attribut auslesen
Stimmt. ;-)
sondern die Darstellungsgrösse ermitteln.
Die Methoden heissen.
clientWidth und clientHeightWas das Problem nicht löst, da es woanders liegt.
Qapla'
@@Wilfried:
nuqneH
Die Abfrage muss evtl. mehrfach erfolgen
Aua. Dafür gibt es http://de.selfhtml.org/javascript/sprache/eventhandler.htm@title=Eventhandler.
Qapla'
PS: Bitte kein TOFU!
name ist nicht erlaubt in <img>
Das ist falsch http://www.w3.org/TR/html401/struct/objects.html#h-13.2
var aWidth = document.n_img_4711_1.width
du versuchst ein width Attribut auszulesen, das nicht existiert.
Auch das ist falsch s.o.
Struppi.
name ist nicht erlaubt in <img>
Das ist falsch http://www.w3.org/TR/html401/struct/objects.html#h-13.2
lapsus Meinerseits.
var aWidth = document.n_img_4711_1.width
du versuchst ein width Attribut auszulesen, das nicht existiert.
Auch das ist falsch s.o.
OK, width ist "implied", also sowieso vorhanden.
Aber wie siehts damit aus?
<p name=""></p>
<p></p>
<script type="text/javascript">
var c = document.getElementsByName('');
alert(c.length ); // gibt 1 aus.
</script>
implied hilft mir also hier nicht weiter, und damit nützt es nichts zu sagen, dass length existiere. Es ecistiert in einem ungreifbaren implizierten Nirvana.
mfg Beat
Aber wie siehts damit aus?
<p name=""></p>
p hat kein Name Attribut, aber darum ging es ja nicht.
<p></p>
<script type="text/javascript">
var c = document.getElementsByName('');
alert(c.length ); // gibt 1 aus.
</script>
Nur im Fx, nicht im IE - das ist ein Bug im Fx.
Struppi.
@@Tina:
nuqneH
Leider liefern mir beide Alternativen den Wert "0" zurück.
Ja.
Dein JavaScript wird ausgeführt, bevor das Bild geladen ist. Deshalb bekommst du per 'width
' die Breite des (leeren) Alternativtextes.
Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: 'window.onload
'.
Qapla'
Hallo Gunnar,
Danke für Deine Antwort.
Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: '
window.onload
'.
die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.
Tina
@@Tina:
nuqneH
die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.
Link zu deiner Seite?
Qapla'
Link zu deiner Seite?
Gibt es leider nicht. Bin gerade dabei diese zu erstellen.
Die Seite ist valide und im FF funktioniert es auch. Nur dieser Pseudo-Brwoser IE6 kanns mal wieder nicht.
Tina
Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: '
window.onload
'.die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.
Das kann nicht sein oder du machst etwas falsch.
Struppi.