selection.type im Firefox?
Olaf
- javascript
Hallo zusammen,
ich arbeite grade an einem Editor für ein CMS. Mit
var sel = window.getSelection();
ermittle ich im Firefox die aktuelle Markierung im Browserfenster.
Der IE kennt nun noch "document.selection.type", beispielsweise "Control" oder "Text".
Wie kann ich denn im Firefox den HTML Code eines ausgewählten Bildes/Controls ermitteln?
Dank & Gruss
Olaf
Hallo,
das wird schwierig. Ich hab auch nur einen Ansatz im Kopf:
getSelection gibt ein Selection-Objekt zurück
http://developer.mozilla.org/en/docs/DOM:window.getSelection
http://developer.mozilla.org/en/docs/DOM:Selection
Da hast du Zugriff auf die betroffenen DOM-Knoten und kannst dir eine Range der Auswahl geben lassen
http://developer.mozilla.org/en/docs/DOM:Selection:getRangeAt
http://developer.mozilla.org/en/docs/DOM:range
Mit der Range hast du Zugriff auf Anfangs- und Endknoten. Um alle Knoten dazwischen zu bekommen, müsste man sich wohl von Hand im DOM-Baum herumhangeln. Und wenn man quasi innerHTML der Range will, zusätzlich serialisieren (jeweils mit innerHTML und dann zusammenfrickeln).
Ich weiß nicht, ob das weiterhilft, aber mit der Range kann man auch ein ein Dokument-Fragment erstellen
http://developer.mozilla.org/en/docs/DOM:range.createContextualFragment
Das muss man dann aber immer noch auf die beschriebene Art durchlaufen, es ist nur einfacher, weil es sich wie ein DOM-Knoten verhält (childNodes und so soweit ich weiß).
Mathias
Hallo,
ich hatte vergessen, auf den XMLSerializer hinzuweisen
window.onmouseup = function (e) {
var selection = window.getSelection();
if (selection.isCollapsed) {
return;
}
var range = selection.getRangeAt(0);
var documentFragment = range.cloneContents();
var htmlString = (new XMLSerializer()).serializeToString(documentFragment);
alert(htmlString);
};
(dann einfach mal was mit der Maus im Dokument markieren)
Man kann sich aber auch einen Serializer selber schreiben, der die Kindknoten des Dokument-Fragment-Knotens rekursiv durchläuft, müsste hier im Archiv zu finden sein. XMLSerializer gibt halt XML-Code zurück, also z.B. »Text <IMG SRC="..."/> Text«.
Mathias