Bei der Auswahl von Texten in HTML-Dokumenten kann von einem DOM-Element zu einem anderen Element übergegangen werden, wobei möglicherweise mehrere andere Elemente auf dem Weg übergeben werden. Mit der DOM-API ist es möglich, den Bereich der Auswahl, die ausgewählten Texte und sogar das Elternelement aller ausgewählten DOM-Elemente zu erhalten (mit commonAncestorContainer oder parentElement() basierend auf dem verwendeten Browser). Ich bin mir jedoch nicht bewusst, dass alle Elemente, die Elemente der ausgewählten Texte enthalten, aufgelistet werden können, außer dass das einzige übergeordnete Element abgerufen wird, das alle Elemente enthält. Das Verwenden der Eltern und Durchlaufen der Kinderknoten wird es nicht tun, da es möglicherweise andere Geschwister gibt, die in diesem Elternelement nicht ausgewählt werden.Alle DOM-Blockelemente für ausgewählte Texte abrufen
Also, gibt es eine Möglichkeit, dass ich alle diese Elemente, die die ausgewählten Texte enthält, bekommen kann. Ich bin hauptsächlich daran interessiert, die Blockelemente zu erhalten (p, h1, h2, h3, ... etc), aber ich glaube, wenn es einen Weg gibt, alle Elemente zu bekommen, dann kann ich sie durchgehen und sie filtern, um das zu bekommen, was ich wollen. Ich freue mich über Ideen und Anregungen.
Vielen Dank.
Nicht die perfekte Lösung, wie Sie gesagt haben, aber es gab mir eine Idee, wie es geht. Daher wählte ich dies als die richtigste Antwort auf meine Bedürfnisse. Schätze das wirklich. – cria
Dies ist eine anständige Antwort, wird aber nicht in IE <9 funktionieren. Es könnte mit einer Überprüfung, dass die Auswahl vor dem Aufruf von 'selection.getRangeAt (0); auch vorhanden ist (mit der Eigenschaft 'rangeCount' der Auswahl ist am einfachsten). –
Es gibt viele Fehler, die ich nicht angesprochen habe, das ist nur, um in die richtige Richtung zu gehen. Ihre Bibliothek benötigt 22k unkomprimiertes Javascript, um wirklich damit umzugehen, und wenn ich es brauchte, würde ich das einfach benutzen. –