Mi sono guardato intorno per un po ', ma non sembra essere un modo semplice per farlo. jQuery non aiuta affatto, sembra che manchi completamente qualsiasi supporto per le gamme di selezione o DOM. Qualcosa che speravo sarebbe stato semplice come $.selection.filter('img')
sembra essere fattibile solo con dozzine di righe di codice che si occupano di enumerare manualmente gli elementi negli intervalli e browser implementation inconsistencies (anche se gli aiuti ierange sono utili qui). Qualche altra scorciatoia?Come ottenere tutti i tag <img> all'interno di una selezione di testo?
risposta
var fragment = getSelection().getRangeAt(0).extractContents();
I nodi nella selezione verranno rimossi e restituiti in una DocumentFragment
, e ora è possibile accedere alla childNodes
di fragment
proprio come si farebbe con qualsiasi elemento.
Alcuni punti: in primo luogo, hai perso le parentesi da 'cloneContents()'. Secondo, il nome della variabile è fuorviante in quanto l'oggetto risultante è un 'DocumentFragment', non un Range. Terzo, qualsiasi immagine in questo frammento sarà clona di quelli trovati nell'intervallo originale, quindi è improbabile che sia utile. In quarto luogo, questo non funzionerà in IE. –
@Tim Giù, scusa, era abbastanza tardi;). Per i punti 1, 2 e 3, ho risolto i problemi che hai menzionato (grazie mille). In quarto luogo, a seconda dell'importanza del vostro pubblico di IE (interni aziendali) potrei dire * "do IE hax" * o * "Così?" * –
Come indicato di seguito, extractContents modifica il documento, che non era un effetto collaterale desiderabile . Ho finito per usare: 'var d = document.createElement (" div "); d.appendChild (. window.getSelection() getRangeAt (0) .cloneContents()); var img = $ ("img", d); '. Dal momento che non avevo bisogno di modificare gli elementi, avrei potuto usare anche il suggerimento Reguce di bortao. –
sembra del tutto manca qualsiasi supporto per la selezione o DOM gamme
Sì, la ragione di ciò è IE manca il supporto per la selezione e DOM Range. È possibile creare un livello di astrazione sopra gli oggetti non standard "TextRange" di IE, ma a causa dell'interfaccia estremamente scarsa esposta da TextRanges è difficile, lento e abbastanza complicato da costituire una libreria completa di per sé. Vedi ad es. this one.
L'OP menziona IERange nella domanda. –
Hmm, strano ... avrei giurato che non c'era prima! – bobince
Su una nota più leggera, questo dovrebbe essere sorprendente? IE supporta * qualsiasi * tecnologie moderne? Ciao, XHTML? Qualcuno lì? ;) –
$("img", window.getSelection().getRangeAt(0).extractContents());
Sfortunatamente sarà necessario utilizzare la già citata libreria IERange per supportare IE 6/7/8.
Degno di nota: DOM Range will be implemented in IE9 e ci sono talks of new selection APIs in HTML5
Non sembra funzionare. La dimensione dell'oggetto() risultante è sempre zero. Inoltre, extractContents modifica il documento (sposta * il contenuto di un intervallo in DocumentFragment). –
- 1. Come ottenere il testo in serie tra tutti i tag <span> da HTML?
- 2. Ottenere un elenco di tutti i tag tra due commit
- 3. Jsoup: ottieni tutti i tag di titolo
- 4. Come trovare tutti i tag di ciascuna pagina e quindi concatenare i tag in una colonna?
- 5. Ottenere il testo da tag di ancoraggio
- 6. JTree: selezione programmata di tutti i nodi
- 7. Php stringa di ottenere tra i tag
- 8. HTML Agility Pack: problema nella selezione di un tag di selezione HTML con i tag di opzione all'interno di
- 9. Regex partita di testo tra i tag
- 10. afferrando il testo tra tutti i tag in Nokogiri?
- 11. come impostare la selezione di selezione all'interno del testo
- 12. eventi di selezione javascript testo
- 13. Come rimuovere i tag ma di formato posta tag contenitore
- 14. XmlPullParser: ottenere testo interno compresi i tag XML
- 15. Inserimento di tag personalizzati nella selezione utente
- 16. Ricevi tutti i tag da taggit
- 17. Come impedire a TinyMCE di aggiungere CDATA ai tag <script> e di commentare i tag <style>?
- 18. Come ottenere tutti i caratteri dopo l'ultimo '-' in una stringa
- 19. Disabilitato <input> che consente la selezione del testo?
- 20. Come elencare tutti i tag Git?
- 21. Jquery: Striscia di tutti i tag HTML specifici da stringa
- 22. Aggiunta di una selezione di tutti i collegamenti (Ctrl + A) a una lista list .net?
- 23. Java Regex per ottenere il testo da ancoraggio HTML (<a> ...</a>) tag
- 24. Sublime Text selezione 2 del testo all'interno dei tag
- 25. resignFirstResponder per tutti i campi di testo
- 26. Rimuovere i tag <script> da una stringa insieme al contenuto tra di loro
- 27. jquery di testo(), interpretano <br> come nuova linea
- 28. come ottenere i margini di testo esatto utilizzati da TextRenderer
- 29. Come ottenere NSTextField per numero di tag?
- 30. Ottenere l'elenco di tutti i display Xorg
questa puzza di qualcosa che si dovrà lavorare per-il browser ho paura ... –
che cosa dovete fare con i tag? modificarli? o solo leggere? se solo leggendo, una ricerca regexp su innerHTML dovrebbe funzionare – ariel