Я хотел бы выбрать текст на странице, смоделировав левую кнопку мыши и перетащив его в указанное положение x, y (в пикселях)Могу ли я имитировать выбор текста с помощью мыши в JavaScript?
Можно ли это сделать с помощью JavaScript?
Я хотел бы выбрать текст на странице, смоделировав левую кнопку мыши и перетащив его в указанное положение x, y (в пикселях)Могу ли я имитировать выбор текста с помощью мыши в JavaScript?
Можно ли это сделать с помощью JavaScript?
Я не думаю, что его можно управлять мышью таким образом, используя 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);
насколько я знаю, что это невозможно. единственный текст, который вы можете выбрать, - это элемент формы (textarea, текст ввода и т. д.)
/** * 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(); } } }
Могу ли я также выбрать до середины элемента .. вроде, буква № 3? Кроме того, ваш пример, который можно выбрать, позволяет сказать элемент тела, содержащий различные div, шрифты и т. Д.? – thedp
Да - см. Отредактированный пост. – Andy