hi,
ich suche jetzt schon ne ganze Weile im Netz nach ner Möglichkeit, wie ich ne eigene outerHTML-Methode hinbekomme, die in jedem Browser funktioniert.
Habe sowas erst kürzlich selber mal gebraucht.
Allerdings nur für ein bestimmtes Element in einem Dokument, wo ich also alle "Umgebungsbedingungen" unter Kontrolle hatte.
Die Allgemeintauglichkeit der folgenden Möglichkeit bezweifle ich (warum, siehe unten).
outerHTML von X dürfte gleich innerHTML von Y sein, wenn Y X umschließt, und sonst nichts weiter enthält.
Da so ein Y nicht immer vorhanden ist, müsste es ggf. erzeugt werden.
Je nach Art von X müsste dabei darauf geachtet werden, welches Element für Y erlaubt ist - für ein Block Element könnte Y ein Div sein, für ein Inline Element ein Span (ggf. auch ein Div, wenn X an einer Stelle steht, wo auch Block erlaubt wäre). Welche weiteren Besonderheiten es ggf. zu betrachten gibt, wäre noch zu ermitteln - bspw. um eine TD oder TR können wir weder Div noch Span so einfach drumherumlegen.
Wenn aber Div oder Span um das Element herum erlaubt wäre (und wir bspw. anhand des nodeNames geprüft haben, welches von beiden brauchbar wäre), dann erzeugen wir uns solch ein Y (createElement), fügen es vor X ein (insertBefore), und hängen dann X in Y um (appendChild).
Y.innerHTML sollte jetzt etwas liefern bzw. setzen, was X.outerHTML entspricht.
Natürlich dürfte die Tauglichkeit so eines Vorgehens vom Einzelfall abhängen - wenn durch das Einfügen von Y CSS-Selektoren ungültig werden, oder plötzlich andere Selektoren greifen, kommt man damit ziemlich ins Schwimmen ...
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }