Hallöchen
wer hätts gedacht, der msie meckert mal wieder (ff, opera, safari und chrome sind zufrieden)
es geht um ein widget-script von mir
hier der entsprechende Auszug
var Wback = document.createElement("div");
Wback.id = this.id;
Wback.setAttributeNode(Wback_style);
msie meldet mir jetzt hier in Zeile 3 “unbekanntes Mitglied”, als würde er nicht erkennen, dass ich oben Wback = doc… gesetz habe
ach, und ja, Wback_style existiert auch
vielleicht weiß einer ja was Mircosoft da von mir will
Grüße
chrisb
March 28, 2009, 5:17pm
2
Und was ist Wback_style , wie hast du es erzeugt?
setAttribute/setAttributeNode sind im IE oftmals problematisch, es ist so gut wie immer besser, Attributwerte direkt zuzuweisen.
erzeugt wirds so
var Wbar_style = document.createAttribute(“style”);
chrisb
March 28, 2009, 5:54pm
4
[quote=“Morpheus”]erzeugt wirds so
var Wbar_style = document.createAttribute(“style”);[/quote]
Das ist ziemlich unsinnig bzw. äussert überflüssig.
Jedes Element hat per se ein style-Objekt unter sich, über das du direkt auf die Style-Eigenschaften des Elementes zugreifen kannst.
JHmMg
March 28, 2009, 5:56pm
5
Vielleicht ist “var Wback = document.createElement(“div”);” in der falschen Zeile gesetzt?
hier en etwas größerer Auszug:
[code] var Wback = document.createElement(“div”);
Wback.id = this.id ;
var Wback_style = document.createAttribute("style");
Wback_style.nodeValue = this.style;
var Wbar = document.createElement("div");
Wbar.id = this.id + "_bar";
var Wbar_style = document.createAttribute("style");
Wbar_style.nodeValue = "background-color: #F06000; cursor: move;";
var Wbar_onmousedown = document.createAttribute("onmousedown");
Wbar_onmousedown.nodeValue = this.id+".drag();";
var Wbar_onmouseup = document.createAttribute("onmouseup");
Wbar_onmouseup.nodeValue = this.id+".drop();";
var Wcont = document.createElement("div");
Wcont.id = this.id + "_cont";
var Wcont_style = document.createAttribute("style");
Wcont_style.nodeValue = "background-color: white;";
Wback.setAttributeNode(Wback_style);
Wbar.setAttributeNode(Wbar_onmousedown);
Wbar.setAttributeNode(Wbar_onmouseup);
Wbar.setAttributeNode(Wbar_style);
Wcont.setAttributeNode(Wcont_style);[/code]
kann vielleicht msie nur die attribute setzen nachdem ich den ganzen node wo angehängt habe? also erst nach document.body.appendChild(Wback) zB
chrisb
March 28, 2009, 8:45pm
7
var Wback_style = document.createAttribute("style");
Wback_style.nodeValue = this.style;
Unnötig, weg damit.
var Wbar_style = document.createAttribute("style");
Wbar_style.nodeValue = "background-color: #F06000; cursor: move;";
Das hier gleich über elementReferenz.syle.eigenschaft = “wert” machen.
Besondere Schreibweise bei Eigenschaftsnamen mit Bindestrich drin beachten, siehe SELFHTML.
var Wbar_onmousedown = document.createAttribute("onmousedown");
Wbar_onmousedown.nodeValue = this.id+".drag();";
Auch unnötig kompliziert. elementReferenz.onmousedown = funktionsReferenz tut’s auch.
meinst also aus
var Wback_style = document.createAttribute("style");
Wback_style.nodeValue = this.style;
machen?
joar, aber hilft jetzt bei meinem problem wohl nicht viel
//edit:
Da sagt’s mir übrigens dann Fehler: setting a property that has only a getter
chrisb
March 28, 2009, 9:51pm
9
Natürlich, schliesslich versuchst du damit das ganze style-Objekt zu überschreiben.
Ich schrieb doch, den einzelnen style-Eigenschaften darüber Werte zuweisen.
Nachzulesen in SELFHTML, Beschreibung des style-Objektes.
yo war dumm
interessanter weise funktioniert es mit onmousedown und onmouseup nicht
wenn ich Wbar.onmouseup = bla mache kriegt er das irgendwie net hin
aber msie spuckt jetzt keine fehler mehr aus
nu hab ich style direkt drin und halt nur die events auf umweg