我想通过模拟鼠标左键并将其拖动到指定的x,y位置(以像素为单位)来选择页面上的文字
可以用JavaScript完成吗?
答案 0 :(得分:13)
我认为不可能使用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);
要选择文档中第4个字段的第3个字符,请尝试:
var p4 = document.getElementsByTagName("p")[3].firstChild;
var range = document.createRange();
range.setStart(p4, 2);
range.setEnd(p4, 3);
window.getSelection().addRange(range);
答案 1 :(得分:1)
/** * 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(); } } }
答案 2 :(得分:-3)
据我所知,无法做到。您可以选择的唯一文本是表单元素(textarea,输入文本等)