XML DOM - Oggetto Range

L'oggetto Range rappresenta un'area di range continua nel documento.

Oggetto Range

L'oggetto Range rappresenta un'area di range continua del documento, come l'area selezionata dall'utente tramite lo spostamento del mouse nella finestra del browser.

Se un'implementazione supporta il modulo Range, allora Oggetto Documentdefinisce Metodo createRange(),chiamandolo si può creare un nuovo oggetto Range.

Attenzione:IE ha definito il metodo non compatibile Document.createRange(), che restituisce un oggetto simile all'interfaccia Range, ma incompatibile.

L'interfaccia Range definisce una serie di metodi per specificare l'area selezionata del documento, oltre a diversi metodi che possono essere utilizzati per eseguire operazioni di taglio e incolla all'interno dell'area selezionata.

Le proprietà dell'interfaccia Range forniscono metodi per ottenere i nodi di confine e l'offset dell'intervallo. I suoi metodi forniscono metodi per impostare i confini dell'intervallo. Nota che i confini dell'intervallo possono essere impostati come Document o Oggetto DocumentFragmentdei nodi. Una volta definiti i punti di confine dell'intervallo, è possibile eseguire operazioni di taglio, copia e incolla utilizzando i metodi deleteContents(), extractContents(), cloneContents() e insertNode().

Quando si modifica il documento attraverso operazioni di inserimento o rimozione, tutti gli oggetti Range che rappresentano una parte del documento cambieranno (se necessario), in modo che i loro punti di confine rimangano validi e rappresentino il contenuto del documento (il più vicino possibile).

Terminologia: intervallo, punto di confine e offset

Un intervallo ha due punti di confine, ossia un punto di inizio e un punto di fine. Ogni punto di confine è specificato da un nodo e dall'offset di quel nodo. Il nodo di solito è Nodo ElementNodo Documento Nodo TextPer i nodi Element e Document, l'offset indica il sotto-nodo del nodo. Un offset di 0 indica che il punto di confine si trova prima del primo sotto-nodo del nodo. Un offset di 1 indica che il punto di confine si trova dopo il primo sotto-nodo del nodo, prima del secondo sotto-nodo. Tuttavia, se il nodo di confine è un nodo Text, l'offset indica la posizione tra due caratteri del testo.

Costanti dell'oggetto Range

Queste costanti specificano come confrontare i punti di boundary degli oggetti Range.

Sono i parametri validi del metodo compareBoundaryPoints(). how Valori validi dei parametri:

Costanti Descrizione
START_TO_START Confronta il punto di fine del Range specificato con il punto di inizio del Range corrente.
START_TO_END Confronta il punto di fine del Range specificato con il punto di fine del Range corrente.
END_TO_END Confronta il punto di fine del Range specificato con il punto di fine del Range corrente.
END_TO_START Confronta il punto di fine del Range specificato con il punto di inizio del Range corrente.

Proprietà dell'oggetto Range

Attenzione:Tutte le proprietà sono di sola lettura e non possono essere modificate impostando queste proprietà per cambiare il punto di inizio e il punto di fine del Range; è necessario chiamare i metodi setEnd() e setStart() per questo scopo.

Attenzione:Qualsiasi lettura di queste proprietà dopo la chiamata al metodo detach() genererà un errore di stato non valido (INVALID_STATE_ERR). Eccezione DOMException.

Proprietà Descrizione
collapsed Restituisce true se il punto di inizio e il punto di fine del Range si trovano nello stesso punto del documento, ossia il Range è vuoto o ristretto.
commonAncestorContainer Nodo Documento più profondo (cioè il loro nodo antenato) che contiene sia il punto di inizio che il punto di fine del Range.
endContainer Nodo Documento che contiene il punto di fine del Range.
endOffset Posizione del punto di fine all'interno di endContainer.
startContainer Nodo Documento che contiene il punto di inizio del Range.
startOffset Posizione del punto di inizio all'interno di startContainer.

Metodi dell'oggetto Range

Attenzione:Se è stato chiamato il metodo detach() del Range, qualsiasi chiamata a un metodo dell'oggetto Range successiva genererà un errore di stato non valido (INVALID_STATE_ERR). Eccezione DOMException.

Metodo Descrizione
cloneContents() Restituisce un nuovo oggetto DocumentFragment che contiene una copia dell'area del documento rappresentata dal Range.
cloneRange() Crea un nuovo oggetto Range che rappresenta la stessa area del documento del Range corrente.
collapse() Fletti la gamma in modo che i punti di limite si sovrappongano.
compareBoundaryPoints() Confronta i punti di limite della gamma specificata e i punti di limite della gamma corrente, restituendo -1, 0 e 1 in base alla loro sequenza. Il confronto del punto di limite da specificare è determinato dal primo parametro, il cui valore deve essere uno dei costanti definiti in precedenza.
deleteContents() Elimina la regione del documento rappresentata dall'oggetto Range corrente.
detach() Notifica che l'implementazione non utilizza più la gamma corrente e può fermare il tracciamento. Se viene chiamato questo metodo della gamma, tutte le chiamate successive a qualsiasi altro metodo della gamma genereranno un'eccezione con il codice INVALID_STATE_ERR. Eccezione DOMException.
extractContents() Elimina la regione del documento rappresentata dalla gamma corrente e restituisce il contenuto di quell'area sotto forma di oggetto DocumentFragment. Questo metodo è molto simile alla combinazione di deleteContents() e cloneContents().
insertNode() Inserisci il nodo specificato all'inizio della gamma del documento.
selectNode() Imposta i punti di limite della gamma in modo che contengano il nodo specificato e tutti i suoi discendenti.
selectNodeContents() Imposta i punti di limite della gamma in modo che contengano i discendenti del nodo specificato, ma non il nodo stesso.
setEnd() Imposta il punto di fine della gamma sul nodo specificato e sull'offset.
setEndAfter() Imposta il punto di fine della gamma sul nodo immediatamente dopo il nodo specificato.
setEndBefore() Imposta il punto di fine della gamma sul nodo immediatamente prima del nodo specificato.
setStart() Imposta il punto di inizio della gamma sull'offset specificato nel nodo specificato.
setStartAfter() Imposta il punto di inizio della gamma sul nodo immediatamente dopo il nodo specificato.
setStartBefore() Imposta il punto di inizio della gamma sul nodo immediatamente prima del nodo specificato.
surroundContents() Inserisci il nodo specificato all'inizio della gamma del documento, quindi riaggiusta i genitori di tutti i nodi nella gamma, in modo che diventino discendenti del nodo inserito.
toString() Restituisci il contenuto di testo puro della regione del documento rappresentata da questa gamma.