Можно ли имитировать выделение текста с помощью мыши в JavaScript?
Я хотел бы выбрать текст на странице, имитируя левую кнопку мыши вниз и перетащите его в указанное место x, y (в пикселях)
можно ли это сделать с помощью JavaScript?
3 ответов
Я не думаю, что можно управлять мышью таким образом, используя JavaScript.
тем не менее, вы можете выбрать части документа непосредственно с помощью JavaScript. Например:
var h3s = document.getElementsByTagName("h3");
var range = document.createRange();
range.selectNode(h3s[0]);
window.getSelection().addRange(range);
будет выбрать первый элемент h3.
Также см.:http://www.quirksmode.org/dom/range_intro.html для получения дополнительной информации о диапазонах зданий.
чтобы выбрать весь текст документа, вы можете использовать:
var body = document.getElementsByTagName("body")[0];
var range = document.createRange();
range.selectNode(body);
window.getSelection().addRange(range);
выбрать 3-й характер, скажем, 4-го абзаца в документе, попробуйте:
var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);
/**
* 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();
}
}
}
насколько я знаю,это невозможно. единственный текст, который вы можете выбрать, находится в элементе формы(textarea, input text и т. д.)