Pregunta

Me gustaría seleccionar texto en la página simulando un botón izquierdo del mouse y arrastrarlo a una ubicación x, y específica (en píxeles)

¿Se puede hacer esto con JavaScript?

¿Fue útil?

Solución

No creo que sea posible controlar el mouse de esta manera usando JavaScript.

Sin embargo, puede seleccionar partes de un documento directamente usando JavaScript. Por ejemplo:

var h3s = document.getElementsByTagName("h3");
var range = document.createRange();
range.selectNode(h3s[0]);
window.getSelection().addRange(range);

seleccionaría el primer elemento h3.

Ver también: http://www.quirksmode.org/dom/range_intro.html para obtener más información sobre la construcción de rangos.

Para seleccionar todo el cuerpo de un documento, puede usar:

var body = document.getElementsByTagName("body")[0];
var range = document.createRange();
range.selectNode(body);
window.getSelection().addRange(range);

Para seleccionar el tercer carácter del, por ejemplo, el cuarto párrafo de un documento, intente:

var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);

Otros consejos

    /**
     * Select text between 2 elements. Support selection of continuous elements.
     * @param {Object} element1 begin element.
     * @param {Object} element2 end element.
     */
    function selectBetweenTwoElements(element1, element2) {
        if (window.getSelection) {
            /* all browsers, except IE 8 and IE 7 */
            var selection = window.getSelection();
            selection.removeAllRanges();
            var range = document.createRange();
            range.setStart(element1, 0);
            range.setEnd(element2, 1);
            selection.addRange(range);
        } else {
            /* works fine in IE 8 / IE 7 */
            if (document.body.createControlRange) {
                var range1 = document.body.createTextRange();
                range1.moveToElementText(element1);

                var range2 = document.body.createTextRange();
                range2.moveToElementText(element2);

                var range = document.body.createTextRange();
                range.setEndPoint("StartToStart", range1);
                range.setEndPoint("EndToEnd", range2);
                range.select();
            }
        }
    }

por lo que sé, eso no se puede hacer. el único texto que puede seleccionar está en un elemento de formulario (área de texto, texto de entrada, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top