WTF src für img Element
Beat
- javascript
Folgendes
...
_gal.big = document.createElement("img");
_gal.big.src = _gal.img[0][0];
_gal.big.alt = _gal.img[0][1];
alert(_gal.img[0][0]); // prints fine
alert(_gal.big.src); // empty !!!!
alert(_gal.big.alt); // prints Fine
Ich kann dem object _gal.big Attribute einfach zuweisen und die Tauchen dann auch im Quellcode auf.
Nur die Zuweisung des src Attributes klappt nicht (FF3).
WTF is going on.
mfg Beat
@@Beat:
nuqneH
...
Hab ich mir erlaubt zu ersetzen durch
var _gal = {};
_gal.img = [];
_gal.img[0] = ["foo", "bar"];
_gal.big = document.createElement("img");
_gal.big.src = _gal.img[0][0];
_gal.big.alt = _gal.img[0][1];
alert(_gal.img[0][0]); // prints fine
alert(_gal.big.src); // empty !!!!
alert(_gal.big.alt); // prints Fine
Nur die Zuweisung des src Attributes klappt nicht (FF3).
WTF is going on.
Keine Ahnung. Ich bekomme nacheinander "foo", "foo", "bar" ausgegeben. (3.5.6)
Vielleicht steckt das Problem in deinen '...'.
Qapla'
@@Gunnar Bittersmann:
nuqneH
_gal.img[0] = ["foo", "bar"];
Ich bekomme nacheinander "foo", "foo", "bar" ausgegeben. (3.5.6)
Na, nicht ganz. In der Tat hatte ich statt "foo" einen vollständigen URI wie "http://example.net/foo" zu stehen, der anstandslos zweimal ausgegeben wird.
Steht dagegen in _gal.img[0][0]
ein relativer URI "foo", kommt für _gal.big.src
"file:///[Pfad]/foo" raus.
Stimmt vielleicht was mit deinem URI in _gal.img[0][0]
nicht?
Qapla'
Stimmt vielleicht was mit deinem URI in
_gal.img[0][0]
nicht?
Ich habe die <noscript> Version im anderen Codebeispiel. Dort werden die URLs korrekt aufgelöst.
Das JS läuft im gleichen Kontext.
mfg Beat
Vielleicht steckt das Problem in deinen '...'.
Hier der Code, der nach des JS Ausführung im Browser steht
<div class="plugin gallery">
<noscript>
<ol>
<li><img src="userdata/img/humor1.png" alt="MISSING"></li>
<li><a href="__?plugin_gallery=1"><img class="preview" src="userdata/img/humor2.png" alt="MISSING"></a></li>
</ol>
</noscript>
<div id="plugin_gallery">
<div><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span></div>
<img style="margin: 0pt auto; display: block;" alt="MISSINGuserdata/img/humor5.png"></div>
<!-- HIER ^^ sieht man dass src nicht eingetragen ist -->
<script type="text/javascript">
var _gal = new Object;
_gal.img = new Array;
_gal.img[0] = ["userdata/img/humor1.png","MISSINGuserdata/img/humor1.png",];
_gal.img[1] = ["userdata/img/humor2.png","MISSINGuserdata/img/humor2.png",];
_gal.img[2] = ["userdata/img/humor3.png","MISSINGuserdata/img/humor3.png",];
_gal.img[3] = ["userdata/img/humor4.png","MISSINGuserdata/img/humor4.png",];
_gal.img[4] = ["userdata/img/humor5.png","MISSINGuserdata/img/humor5.png",];
_gal.prev = document.createElement("div");
_gal.show = document.createElement("img");
_gal.show.src = _gal.img[0][0];
_gal.show.alt = _gal.img[0][1];
alert(_gal.img[0][0]); // prints fine <-----------
alert(_gal.show.src); // empty <--------------
alert(_gal.show.alt); // prints Fine <-----------
//_gal.show.alt = "DEFAULT";
_gal.show.style.display="block";
_gal.show.style.margin="0 auto";
for( var i=0; i < _gal.img.length; i++ ){
var e = document.createElement("span");
e.innerHTML = (i+1);
e.onclick = function(){
alert(this.firstChild.data);
var c = this.firstChild.data - 1 ;
_gal.show.src = _gal.img[c][0];
_gal.show.alt = _gal.img[c][1];
};
_gal.prev.appendChild(e);
}
_gal.cont = document.getElementById("plugin_gallery");
_gal.cont.appendChild(_gal.prev);
_gal.cont.appendChild(_gal.show);
</script>
</div>
mfg Beat
Hallo Beat,
var _gal = new Object;
_gal.img = new Array;
fehlen hier nicht die "()"?
Gruß, Jürgen
var _gal = new Object;
_gal.img = new Array;fehlen hier nicht die "()"?
Bitte nicht raten...
Es hat wirklich mit der Zuweisung zu
ob.src = "http://example.org/"
zu tun. Jedes andere Attribut kann ich zuweisen.
Aber aus irgend einem Grund dieses nicht.
Egal ob ich eine Variable zuweise oder ein Literal.
Egal ob Absoluter Link oder relativer. Das object bleibt leer.
Ich habe auch schon AdBlock+ und anders ausgeschaltet, für den Fall.
Aber da ist nichts zu finden.
mfg Beat
Hallo Beat,
var _gal = new Object;
_gal.img = new Array;fehlen hier nicht die "()"?
Bitte nicht raten...
ich rate nicht: http://de.selfhtml.org/javascript/objekte/array.htm. Oder darf man hier die Klammern weglassen?
Gruß, Jürgen
var _gal = new Object;
_gal.img = new Array;fehlen hier nicht die "()"?
Wenn die Parameterliste bei new Konstruktorfunktion() leer ist, ist das Weglassen von () möglich.
http://bclary.com/log/2004/11/07/#a-11.2.2
Hallo new-Operator,
var _gal = new Object;
_gal.img = new Array;fehlen hier nicht die "()"?
Wenn die Parameterliste bei new Konstruktorfunktion() leer ist, ist das Weglassen von () möglich.
http://bclary.com/log/2004/11/07/#a-11.2.2
danke für die Info. Ich habe new Array/Object bisher immer nur mit (leeren) Klammern benutzt und dachte, das da der Fehler steckt. Aber ich habe meinen Browser ja auch noch nicht so verstellt wie Beat.
Gruß, Jürgen
var _gal = new Object;
_gal.img = new Array;
Du kennst die literale Schreibweise? Ja soltest du sie ist ähnlich wie in Perl und du benutzt sie sogar selber, aber dann falsch.
_gal.img[0] = ["userdata/img/humor1.png","MISSINGuserdata/img/humor1.png",];
_gal.img[0] ist ein Array (übrigens führt das Kommma hinten im IE zu einer Fehlermeldung -> Ein Bug).
_gal.show.src = _gal.img[0][0];
du könntest hier auch den Status abfragen:
_gal.show.onload = function() { alert('this + ' is ok.' );};
_gal.show.onerror = function() { alert('this + ' is NOT ok.' );};
_gal.show.src = _gal.img[0][0];
Struppi.
Du kennst die literale Schreibweise? Ja soltest du sie ist ähnlich wie in Perl und du benutzt sie sogar selber, aber dann falsch.
Die letzte Bemerkung ist falsch!
Struppi.
var _gal = new Object;
_gal.img = new Array;Du kennst die literale Schreibweise? Ja soltest du sie ist ähnlich wie in Perl und du benutzt sie sogar selber, aber dann falsch.
Das werde ich mir wohl abgewöhnen müssen
also
var x = new Object();
_gal.img[0] = ["userdata/img/humor1.png","MISSINGuserdata/img/humor1.png",];
_gal.img[0] ist ein Array (übrigens führt das Kommma hinten im IE zu einer Fehlermeldung -> Ein Bug).
Bereinigt.
Der Fehler wer durch einen Eintrag in about:config verursacht.
Wohl noch aus FF 2 Zeiten.
mfg Beat
Das werde ich mir wohl abgewöhnen müssen
also
var x = new Object();
nein, die lieterale schreibweise wäre:
var x = {};
Der Fehler wer durch einen Eintrag in about:config verursacht.
Wohl noch aus FF 2 Zeiten.
Seltsam.
Struppi.
@@Gunnar Bittersmann:
nuqneH
Hab ich mir erlaubt zu ersetzen durch
var _gal = {};
_gal.img = [];
_gal.img[0] = ["foo", "bar"];
Wobei ich mir dann die Frage stellte, warum ich nicht einfach
~~~javascript
var _gal = {};
_gal.img = [["foo", "bar"]];
geschrieben hatte. Oder gleich für das Ganze
var _gal = {img: [["foo", "bar"]]};
Scharf. Inder Kürze liegt die Würze.
Qapla'
Zur Info: FF3 sperrt die Zuweisung
MSIE 8 macht's fein.
mfg Beat
Zur Info: FF3 sperrt die Zuweisung
MSIE 8 macht's fein.
Den hab ich nicht, aber alle anderen IE sollten eigentlich eine Fehlermeldung werfen.
Struppi.
Lösung gefunden
In FF about config war gesetzt:
dom.disable_image_src_set;true
umstellen auf false macht es wirksam.
Wer weiss, vielleicht dürften auch jetzt diverse Greyboxen wieder funktionieren.
Ich kann mich blass erinnern, dass diese Variable mal wegen einem Sicherheitsadvisory gesetzt wurde.
Sorry...
mfg Beat
Hallo Beat.
Um nicht in einem Browser testen zu müssen, der für das tägliche Surfen konfiguriert ist, habe ich mir im Firefox ein Profil "Development" angelegt.
In diesem sind dann auch die typischen Entwicklererweiterungen wie Firebug und die Webdeveloper-Toolbar installiert.
Damit vermeide ich, meinen Browser für zwei sehr unterschiedliche Zwecke benutzen zu müssen.
Servus,
Flo