2010-01-15 4 views
6

Quiero modificar la selección del documento (usuario seleccionado actualmente con el mouse o el teclado), ¿cómo hacerlo de forma cruzada?cómo modificar la selección de documentos en javascript?

+2

¿Puede ser más específico sobre lo que quiere decir con "modificar la selección del documento"? – sberry

+0

usuario actualmente seleccionado con el mouse o el teclado .... ¿está claro? disculpa mi pobre ingles. – lovespring

+0

Consulte http://stackoverflow.com/questions/2075304/how-to-modify-the-document-selection-in-javascript, solo use iframe.window.selection. –

Respuesta

6

No he trabajado con la selección de texto lo suficiente como para proporcionar ayuda real, pero lo que está tratando de hacer se puede hacer. Usted tendrá que mirar en las dos funciones siguientes:

  1. createRange()MSDN | MDC
  2. getRangeAt()MDC

Sé que puede ser implementado navegadores. Se puede ver algo de él en acción aquí:

http://fuelyourcoding.com/a-few-strategies-for-using-javascript/

Desplazándose hacia la parte inferior y haga clic en el icono del elefante, que utiliza la secuencia de comandos de Evernote. Sin embargo, mi secuencia de comandos primero selecciona el área de contenido principal (la verá parpadear en naranja) y luego deselecciona una vez que se realiza la captura.

Aquí hay un mini plugin jQuery que lo hace. Fue adaptado por mí desde algún sitio, y como dicen los comentarios, me siento horrible por no recordar. Es realmente importante tener en cuenta que la adaptó a jQuery, pero el código venía de algún sitio en el que explican cómo hacerlo:

// Adapted this from somewhere. Feel horrible for not remembering. 
$.fn.autoSelect = function(){ 
    var selectTarget = this[0]; // Select first element from jQuery collection 
    if(selectTarget != null) { 
     if(selectTarget.tagName == 'TEXTAREA' || (selectTarget.tagName == "INPUT" && selectTarget.type == "text")) { 
      selectTarget.select(); 
     } else if(window.getSelection) { // FF, Safari, Opera 
      var sel = window.getSelection(); 
      var range = document.createRange(); 
      range.selectNode(selectTarget); 
      sel.removeAllRanges(); 
      sel.addRange(range); 
     } else { // IE 
      document.selection.empty(); 
      var range = document.body.createTextRange(); 
      range.moveToElementText(selectTarget); 
      range.select(); 
     }; 
    }; 
    return this; // Don't break the chain 
}; 

Parece que este guión es un par de lugares en línea, pero here is another variation on it

5

Como ejemplo, y el más fácil, supongamos que desea mover la selección del usuario para contener el contenido de un elemento. Lo siguiente funcionará en todos los principales navegadores:

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

selectElementContents(document.getElementById("someElement")); 
+0

gracias, Tim. – lovespring

Cuestiones relacionadas