2010-11-15 10 views
21

In JavaScript esistono vari metodi per accedere alla selezione del testo dell'utente e per creare selezioni di testo (o intervalli) - vedere http://www.quirksmode.org/dom/range_intro.html.È possibile impostare e/o modificare la selezione del testo dell'utente in JavaScript?

Come da tale pagina, è possibile creare un intervallo a livello di codice e accedere al testo all'interno di esso. Tuttavia, ciò non cambia la selezione del testo dell'utente, né consente all'utente di avere del testo selezionato se non lo ha già fatto.

È possibile impostare e/o modificare la selezione del testo dell'utente in JavaScript?

+1

vuoi dire che vuoi che un determinato testo nella pagina venga visualizzato all'improvviso? Evidenziazione blu e tutto? –

+0

@Shadow: sì, è tutto. –

risposta

31

Sì. In tutti i browser è possibile ottenere uno o più Range s o un TextRange dalla selezione dell'utente, ed entrambi Range e TextRange hanno metodi per modificare il contenuto dell'intervallo.

UPDATE

È possibile impostare la selezione dell'utente mediante la creazione di un Range e aggiungendolo all'oggetto Selection nella maggior parte dei browser e con la creazione di un TextRange e chiamando il suo metodo select() in IE < = 8.

Ad esempio, per impostare la selezione per comprendere il contenuto di un elemento:

function selectElementContents(el) { 
    if (window.getSelection && document.createRange) { 
     var sel = window.getSelection(); 
     var range = document.createRange(); 
     range.selectNodeContents(el); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } else if (document.selection && document.body.createTextRange) { 
     var textRange = document.body.createTextRange(); 
     textRange.moveToElementText(el); 
     textRange.select(); 
    } 
} 

Esistono anche diversi metodi dell'oggetto Selection che possono essere utilizzati per modificare la selezione dell'utente nei browser non IE. Se si può essere più specifici su come si desidera modificare la selezione, sarà più semplice aiutare.

+0

Ah sì, scusate, non ho espresso la domanda molto bene - in realtà sto cercando di impostare la selezione del testo dell'utente quando non ce l'hanno già. –

+0

è possibile selezionare diversi intervalli contemporaneamente. Voglio essere in grado di selezionare più parti di testo che sono discontinue. – Techsin

+1

@Techsin: Sì, ma solo in Firefox. Chiama 'addRange()' per ogni intervallo che vuoi selezionare. –

Problemi correlati